SpringBoot的starter到底是什么?( 七 )

这里就是starter能够自动配置的秘密
此外,有些朋友看其他人定义的springboot starter可能会有疑惑 。
先看看druid-spring-boot-starter

SpringBoot的starter到底是什么?

文章插图
alibaba定义的druid-spring-boot-starter只有xxx-spring-boot-starter.jar文件,而没有xxx-spring-boot-autoconfigure.jar文件 。
再看看spring-boot-starter-jdbc
SpringBoot的starter到底是什么?

文章插图
更神奇的是这个文件中连pom.xml都没有,一脸懵逼 。。。。。。。
是不是我讲错了?
答:其实没有 。
SpringBoot的原则是约定优于配置
从spring-boot-starter-jdbc内部空实现来看,它的约定是要把xxx-spring-boot-starter.jar和xxx-spring-boot-autoconfigure.jar区分开的 。个人认为,alibaba定义得并不好,没有遵照springboot的约定,虽然功能不受影响 。(这个地方欢迎一起探讨一下)
而springboot自己定义的spring-boot-starter-jdbc为什么连pom.xml文件也没有呢?
它不需要依赖xxx-spring-boot-autoconfigure.jar文件吗?
因为springboot把所有的自动配置的类都统一放到spring-boot-autoconfigure.jar下面了:
SpringBoot的starter到底是什么?

文章插图
spring.factories文件内容如下:
SpringBoot的starter到底是什么?

文章插图
SpringBoot这样集中管理自动配置,而不需要从各个子包中遍历,我个人认为是为了查找效率 。
我们最后再看看spring-cloud-starter-openfegin
SpringBoot的starter到底是什么?

文章插图
明显看到,它是遵循了我们说的原则的 。
除此之外,还有一个原则一顺便提一下 。
SpringBootSpringCloud系列定义jar包的名称是:
  • spring-boot-starter-xxx.jar
  • spring-cloud-starter-xxx.jar
而我们自己的项目定义的jar应该是:
  • xxx-spring-boot-starter.jar
最后说一句(求关注,别白嫖我)如果这篇文章对您有所帮助,或者有所启发的话,帮忙扫描下发二维码关注一下,您的支持是我坚持写作最大的动力 。
求一键三连:点赞、转发、在看 。
关注公众号:【苏三说技术】,在公众号中回复:面试、代码神器、开发手册、时间管理有超赞的粉丝福利,另外回复:加群,可以跟很多BAT大厂的前辈交流和学习 。

经验总结扩展阅读