一. Spring Boot的特性(优点)有哪些?

springboot的starter启动原理 springboit starter_Spring Boot


springboot的starter启动原理 springboit starter_加载_02


二.Starter原理解密

  • Starter的作用
    starter 引入相关的jar
    starter 自动完成bean的配置
  • 疑问1:这些bean的依赖关系是如何自动处理的?
    如:如果我们没有配置datasource,那么MyBatis会被加载吗?
  • 疑问2:这些bean配置需要的参数是如何规定并获取的?
    如:配置datasource需要数据库连接参数,MyBatis也有自己的配置参数
  • 疑问3:这些bean配置是如何被发现并加载的?
  • 思考:如果我们开发的一些通用组件,被很多项目使用,我们是不是可以制作一个starter,来简化使用。

三. 开发自己的Spring-Boot-Starter

  • Starter是一个集成接合器,完成两件事:
    引入相关的jar
    自动配置
  • Spring Boot规范
    starter.jar 完成引入相关的jar
    autoConfigure.jar 完成自动配置
    也可以只用一个jar
  • Starter命名规范
  • springboot的starter启动原理 springboit starter_初始化_03


  • springboot的starter启动原理 springboit starter_Spring Boot_04


  • springboot的starter启动原理 springboit starter_jar_05


  • springboot的starter启动原理 springboit starter_Spring Boot_06


  • springboot的starter启动原理 springboit starter_jar_07


  • springboot的starter启动原理 springboit starter_初始化_08


  • springboot的starter启动原理 springboit starter_Spring Boot_09


  • springboot的starter启动原理 springboit starter_加载_10


  • springboot的starter启动原理 springboit starter_jar_11


  • springboot的starter启动原理 springboit starter_jar_12


  • springboot的starter启动原理 springboit starter_加载_13

  • 蓝色部分是在容器初始化前完成加载,而@PropertySource是在容器初始化后加载的,越晚加载的优先级越高。

Spring-Boot 参数配置语法

springboot的starter启动原理 springboit starter_加载_14


springboot的starter启动原理 springboit starter_Spring Boot_15


springboot的starter启动原理 springboit starter_初始化_16


springboot的starter启动原理 springboit starter_Spring Boot_17


springboot的starter启动原理 springboit starter_初始化_18

  • @ConfigurationProperties 属性名灵活绑定

springboot的starter启动原理 springboit starter_jar_19


springboot的starter启动原理 springboit starter_加载_20


springboot的starter启动原理 springboit starter_初始化_21

  • @ConfigurationProperties VS @Value