作者:HaC是个程序员
链接:https://www.zhihu.com/question/426662759/answer/1739510301
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1、Spring Boot Stater
2、spring-boot-starter-parent 的作用是什么?
3、spring-boot-dependencies
要理解spring-boot-starter-parent,首先要明白springBoot中的starter是什么。
可以理解为这是一个启动器,这个启动器会自动依赖其他组件,一站式获取你需要的与spring有关的组件。
举个例子:
如果你想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa
、spring-boot-starter-jdbc
依赖项,你就可以完美进行。
如果你想开发一个web应用程序,只需要你的项目包含 spring-boot-starter-web
依赖项就可以了。
org.springframework.boot
spring-boot-starter-web
然后就会自动依赖其他组件:
而不是像spring那样,你需要在pom单独引入spring-core、spring-beans、spring-aop 等等,最最最重要的是,可以省去了版本冲突的问题。还可以通过spring-boot-starter-parent
统一控制版本。
前面说到 ,spring-boot-starter-parent
可以统一控制版本。
还有以下作用:
1.8
UTF-8
一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承。
继承默认版本:
com.alibaba
fastjson
例如,打包的时候把src/main/resources下所有文件都打包到包中:
**/*.*
true
小彩蛋:
为什么依赖包可以不写版本号?
可以看一下spring-boot-starter-parent
,我这里是2.4.1
版本,它的parent是 spring-boot-dependencies
再根据spring-boot-dependencies
跳过去,发现该版本下的spring-boot-starter-parent
会有很多默认的依赖包的版本:
现在你就知道 spring-boot-starter-parent
不需要其他依赖包指定版本了吧,这里都有默认的版本,你可以不需要考虑依赖包的版本了,完美解决冲突问题了。
Spring Boot的每个发布版本都会规划它所支持的依赖项。实际上,你不用指定这些依赖项的版本号,因为Spring Boot都为你管理好了。当更新Spring Boot时,会相应的更新依赖。
spring-cloud-dependencies也是一个依赖管理器的pom文件,与spring-boot-starter-parent的作用一样,不同的是spring-cloud-dependencies是对cloud的依赖管理。如:spring-cloud-starter-config、spring-cloud-starter-netflix-eureka-server
1使用spring-boot-starter-parent
1.1.配置继承spring-boot-starter-parent:只需要在这里指定Spring Boot的版本号。如果导入其他的starters,你可以完全省略版本号。
1.2可以通过property覆盖内部的依赖
2不使用parent POM,配置Spring Boot
2.1如果你可能有自己的企业标准parent,或者你可能只是比较喜欢明确声明所有的Maven配置。可以通过使用scope=import利用依赖管理的便利:不过这种方式不能使用property的形式覆盖原始的依赖项
2.2要达到同样的效果,需要在dependencyManagement里面的spring-boot-dependencies之前添加依赖的东西
作者:十斗鱼
链接:https://www.jianshu.com/p/0d97b5ec2aa7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。