当前位置: 首页 > news >正文

JavaEE - Spring Boot 简介

1.Maven

1.1 什么是Maven

翻译过来就是:

Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通 过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。

可以理解为:Maven是一个项目管理工具,通过pom.xml文件的配置来获取jar包,而不用手动去添加jar包。

1.2 为什么学习Maven

特点:简单,方便,提高我们的开发效率,减少我们的开发bug。

并且,Maven提供的功能非常多,主要有:1.项目构建,2.管理依赖。

1.3 创建一个Maven项目

IDEA本⾝已经集成了Maven,我们可以直接使用,无需安装。

不同版本的idea界面展示会有所不同,以下截图idea版本为2024.1

 这样我们就创建好了一个Maven项目。

1.4 Maven核心功能

详细讲解Maven在项目开发中的作用。

1.项目构建

2.管理依赖 

1.4.1 项目构建

Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的⾃动化项⽬构建⽅式,当我们开发了⼀个项⽬之后,代码需要经过编译,测试,打包,发布等流程,每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进⾏,就显得特别麻烦,而Maven给我们提供了 ⼀套简单的命令来完成项⽬的构建。

Maven的命令有以下: 

例如,点击package,就可以完成项目的打包操作。

 

打包就是把所有的class文件全部放在一起,打成jar包或者war包。

jar包和war包都是⼀种压缩⽂件。

jar包就是把开发⼈员已经写好的⼀些代码进⾏打包.打好的jar包就可以引⼊到其他项⽬中,也可以直 接使⽤这些jar包中的类和属性.另外也可以打成可执⾏jar包,这样的包就可以通过java -jar命令来执行。

war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西,通常⽤于⽹站。

1.4.2 依赖管理

Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。获取的jar包其实就是依赖。

pom.xml就是maven的配置文件,用以描述项目的各种信息。

依赖:指当前项目运行所需要的jar包。

使用JDBC需要手动下载mysql-connector-java的包,并且添加到项目中。

但是,如果使用maven,我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了。

步骤1):在pom.xml文件 <dependencies> 标签内,添加依赖坐标

需要的依赖jar包在中央仓库都可以找到:Maven Repository: Central (mvnrepository.com)

步骤2):点击刷新按钮,引入新加入的依赖jar包

后续有添加新的jar包,或者修改jar包版本,都需要通过该⽅式在项⽬中添加依赖.

 

步骤3):刷新完之后,就可以在项目中看到新加入的jar包

依赖传递

早期我们没有使用maven时,想向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。

比如A依赖B,B依赖C,那么项目A引入B的同时,也需要引入C,如果手动管理这个依赖过程就麻烦。我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的。

但,使用maven的话,就可以避免管理所依赖的关系。只需要在pom文件中,定义直接依赖就可以。由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入。

1.4.3 Maven Help 插件

当项⽬⽐较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突.解决冲突之前,需要先 找到冲突,我们可以使⽤Maven Help插件来观察包和包之间的依赖关系.

插件就是对程序的⼀些特定场景,做出⼀些特定的功能的扩展。 

安装插件:File ->Settings ->Plugins ->搜索'Maven Help' -> 找到对应插件, 点击Install 安装即可,安装后需要重启下idea,才能⽣效。

安装之后,打开pom⽂件,可以看到Jar包之间的依赖关系;也可以右键手动删除一些依赖。

 1.5 Maven仓库

我们通过几行代码就把依赖的jar包放在了项目里,具体是如何实现的?

<dependencies><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.3.0</version></dependency>
</dependencies>

上述代码,我们称之为“坐标”,也就是唯一的。

在Maven中,根据groupId、artifactId、version的配置,来唯⼀识别⼀个 jar 包,缺⼀不可. 当我们在pom⽂件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库⾥寻找Jar包,并把他 下载下来,添加到项⽬中。

这个Jar包下载的地⽅就称为仓库。 仓库:⽤于存储资源,管理各种jar包。

Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包,插件等)。

 

Maven仓库分为两大类:本地仓库和远程仓库.其中远程仓库又分为中央仓库,私服和其他公共库。

 1.5.1 本地仓库

本地仓库:自己计算机上的一个目录(用来存储jar包)。

本地仓库地址可以通过Maven配置查看:

 

查看该仓库⽬录,可以看到该⽬录下有很多的jar(最开始是空的,随着Maven的使⽤,该仓库下⽂件会越来越多)。

当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包。如果有,则在项目中直接引用;如果没有,则去中央仓库中下载对应的jar包到本地仓库。

1.5.2 中央仓库

中央仓库:Maven软件中内置一个远程仓库地址,就是中央仓库,服务于整个互联网,由maven团队维护,全球唯一。

仓库地址:https://repo1.maven.org/maven2/

可以通过https://mvnrepository.com这个⽹站来查询并下载。

 查找jar的坐标

1)访问 https://mvnrepository.com/

2)进行查找,比如mysql

 

3)选择要添加的jar包版本

 

4)查看jar包对应坐标

 

jar包版本的选择:

1.5.3 私有服务器(私服)

私服:一般由公司团队搭建的私有仓库。

 私服属于某个公司,或者某个部门,往往需要一定权限。有了私服,Maven依赖下载的顺序又发生了变化。

当Maven需要下载资源的时候

1. 先从本地仓库获取,本地仓库存在,则直接返回

2. 如果本地仓库没有,就从私服请求,私服存在该资源,就直接返回

3. 如果私服上不存在该资源,则从中央仓库下载,中央仓库不存在,就报错了... 

4. 如果中央仓库中存在,就先缓存在私服上之后,再缓存到本地仓库⾥,再为Maven的下载请求提供服务

私服是很多⼈在使⽤的,所以只需要第⼀个使⽤者下载⼀次就可以了。

1.6 Maven设置国内源

因为中央仓库在国外,所以下载起来会比较慢,我们可以选择借助国内一些公开的远程仓库来下载资源。

1.6.1 配置当前项目settings

1) file >> settings 查看配置文件的地址

2)配置国内源

打开settings.xml文件,在mirrors节点上,添加内容(没有settings文件可以自己在网上查找并保存):

<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿⾥云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

 1.6.2 设置新项目的setting(idea专业版不需要)

上述配置的内容,只对当前项目生效,为了让后续新建的项目也生效,需要重新设置以下新项目的settings。

当前项⽬和新项⽬共⽤⼀个setttings⽂件即可,所以新项⽬的设置,只需要确认⼀下settings⽂件的路径即可。

 

2.SpringBoot介绍  

2.1 认识Spring

学习SpringBoot之前先认识Spring~

Spring两个含义:

  1. 一个是Spring家族,全家桶;
  2. 另一个指Spring Core,也就是Spring Framework。

上述是Spring官⽅(https://spring.io/)的介绍。

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。

Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题。

这些项目都是基于Spring Framework来进行开发的。但是Spring Framework存在配置多, ⼊⻔难的问题, Spring 也意识到了这个问题, 为了简化开发者的使⽤,从⽽创造性的推出了SpringBoot。

Spring Boot 的诞生是为了简化 Spring 程序开发的

 Spring Boot就是 Spring 框架的脚⼿架,它是为了快速开发 Spring 框架⽽诞⽣的。

 2.2 Spring Boot 项目搭建

1)File >> New >> Project

(不同版本的idea界面显示可能会有不同)

2)点击Next

 3)点击Create就完成 Spring Boot 的项目创建了。

  注意事项

第⼀次打开Spring Boot 项⽬需要加载很久,因为当前Spring Boot 框架并没有在⾃⼰的本地仓库。为了加速Spring Boot 项⽬的下载,在打开项⽬之前,请先确认⾃⼰的 Maven 已经配置为国内源。

2.3 项目代码和目录介绍

1)项目代码

观察pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

pom.xml⽂件⾥的具体信息,不需要过度关注,我们主要看标签⾥⾯的内容:

pom⽂件中,引⼊了两个依赖:

• spring-boot-starter-web:包含了web应⽤开发所需要的常⻅依赖

• spring-boot-starter-test:包含了单元测试所需要的常⻅依赖

父工程

这个依赖没有指定具体的版本号,但我们的jar包也正常引入到项目中,并且查看也有版本号。

 同时,本地仓库的jar包也下载下来了~

为什么没有指定 <version>,程序也可以正常运行呢?

因为每一个SpringBoot工程,都有一个父工程,依赖的版本号,在⽗⼯程中统⼀管理。⽗⼯程指定版本号后,就会⾃动引⼊和所指定版本对应的依赖,创建的SpringBoot项⽬,会继承 SpringBoot⽗⼯程。

 2)目录介绍

Spring Boot项目主要有两个主要的目录:

  • src/main/java:Java源代码
  • src/main/resources:为静态资源或配置文件 -->> 1./static:静态资源文件夹,有js,css,html等静态文件,不需要服务器数据进行绑定的页面;2. /templates:板块资源文件夹,主要存放动态模板文件,比如JSP,Freemarker,Thymeleaf等需要服务器动态渲染数据的文件
  • src/main/test:测试代码源代码
  • target:编译后的文件路径
  • pom.xml:maven配置文件

2.4 启动项目

点击启动类的main方法就可以运行SpringBoot项目。

2.5 输出hello world

⽤ Spring Boot 来实现和浏览器及用户的交互。

在创建的项目包路径下创建UserController的java文件,实现代码如下:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/sayHi")public String say() {return "hello Spring Boot ~";}
}

重新启动项目,访问 http://127.0.0.1:8080/sayHi 最终的效果如下:

以上 ,是对 Spring Boot 的一个简单认识~


😊

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MATLAB-bode图编程
  • 本地连接远程阿里云K8S
  • OpenCV车牌识别技术详解
  • 【数据结构之C语言实现动态顺序表】
  • “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)问题
  • k8s中的重启策略
  • 视觉SLAM第二讲
  • 【03】Java虚拟机是如何加载Java类的
  • AttributeError: module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘
  • QT 关于QTableWidget的常规使用
  • Postman测试工具详细解读
  • 如何将整个运行环境打包成docker
  • 每日一知识点 - Java Lambda 表达式
  • C++——类和对象(中)
  • DeFi革命:揭秘去中心化金融的核心技术与实操指南
  • Fabric架构演变之路
  • HashMap剖析之内部结构
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java小白进阶笔记(3)-初级面向对象
  • js
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • node学习系列之简单文件上传
  • PHP的类修饰符与访问修饰符
  • Redis 懒删除(lazy free)简史
  • vue 个人积累(使用工具,组件)
  • Vue实战(四)登录/注册页的实现
  • 百度小程序遇到的问题
  • 不上全站https的网站你们就等着被恶心死吧
  • ------- 计算机网络基础
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 蓝海存储开关机注意事项总结
  • 我看到的前端
  • 转载:[译] 内容加速黑科技趣谈
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Forward) Music Player: From UI Proposal to Code
  • (rabbitmq的高级特性)消息可靠性
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (九十四)函数和二维数组
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (五)MySQL的备份及恢复
  • (一)SvelteKit教程:hello world
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 6 集成和使用 mongodb
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .Net接口调试与案例