目录
1:SpringBoot的依赖管理
1.1:依赖管理结构
2:父依赖spring-boot-starter-perent
2.1:父级标签
2.2:properties标签
2.3:resource标签
2.4:plugin插件信息
3:祖宗依赖spring-boot-dependencies
4:为什么不需要Tomcat
5:springboot的starter(启动器)
5.1:web项目的spring-boot-starter-web
5.2:需要发送邮件的Mail Starter
6:依赖管理总结
在springboot项目中,简化了Spring应用的初始搭建以及开发过程,同样对jar的依赖管理也有一套自己的标准。我们创建好自己的springboot项目模板后可以看到pom文件,对需要的jar进行依赖管理,在将项目打包之后,由于项目包包含Tomcat,因此我们可以直接使用java -jar 项目包来运行项目。这些都是依赖于springboot的项目管理,下边来具体分析。
我们创建好项目,查看pom文件如下开始分析
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.14
com.example
SpringBoot2_01
0.0.1-SNAPSHOT
SpringBoot2_01
SpringBoot2_01
17
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-mail
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
8.0.33
org.springframework.boot
spring-boot-maven-plugin
org.project-lombok
lombok
分析结构:
我们在此pom中可以看到项目的父级依赖是spring-boot-starter-perent,
我们点击进入spring-boot-starter-perent
看到他还有一个父级依赖是spring-boot-dependencies
他们结构是
-------本项目pom.xml
---------spring-boot-starter-perent
------spring-boot-dependencies
我们查看spring-boot-starter-perent,由于此过长。我们查看有效信息得知spring-boot-starter-perent没用定义jar管理的dependencyManagement标签。
它里边主要有四大标签
这里边有匹配当前的springboot版本的依赖其他jar包的版本,便于我们直接引入相应的jar,不需要指定版本。对于没有指定的jar还是需要自己引入指定版本的。
org.springframework.boot
spring-boot-dependencies
2.6.7
此标签的作用是指定了Java的编译版本,编译编码的信息
1.8
@
${java.version}
${java.version}
UTF-8
UTF-8
此标签的作用是制定了springboot项目的配置文件在resource下边或者其他位置。可以使yml、ymal、properties三种格式的文件
${basedir}/src/main/resources
true
**/application*.yml
**/application*.yaml
**/application*.properties
${basedir}/src/main/resources
**/application*.yml
**/application*.yaml
**/application*.properties
该插件可以使maven直接将依赖的jar打包,可以使用java -jar跑项目了。
org.springframework.boot
spring-boot-maven-plugin
repackage
repackage
${start-class}
这个依赖的pom很长。这里边有各种各样的springboot依赖。主要是管理springboot不同版本对应的jar。我们可以在自己的项目中直接使用,不需要指定版本。
org.apache.activemq
activemq-amqp
${activemq.version}
org.apache.activemq
activemq-blueprint
${activemq.version}
org.apache.activemq
activemq-broker
${activemq.version}
org.apache.activemq
activemq-camel
${activemq.version}
此处忽略很多,只是作为演示
org.springframework.boot
spring-boot-starter-web
2.6.7
org.springframework.boot
spring-boot-starter-webflux
2.6.7
org.springframework.boot
spring-boot-starter-websocket
2.6.7
我们可以在自己的项目中直接使用,或者覆盖掉springboot的依赖版本管理
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
当我们需要web模块的时候,只要引入spring-boot-starter-web
org.springframework.boot
spring-boot-starter-web
这个jar的pom中我们查看此pom中有各种依赖,依赖图可以看到spring依赖 tomcat依赖 json依赖等。 所以初步判定打包的项目中tomcat。
springboot的starter是各种场景启动器。我们需要使用什么功能就配置什么starter。对应的starter中有此功能支持的各种jar,官网文档有很多的启动器,不需要我们在去找对应的jar和处理版本兼容了。规范是spring-boot-starter-*
比如web的starter。我们只需要引入jar包,就有了上边的tomcat,spring的jar和mvc的jar。就可以使用注解开发web项目了。
我们只需要导入此jar,然后写业务代码就行了。
org.springframework.boot
spring-boot-starter-mail
所谓的依赖管理就是把各种启动器导进来,启动器会把需要的jar包和版本自动导入,开发的时候不需要自己导入jar和解决依赖冲突了