Spring Boot启动流程
- SpringBoot启动过程主要分为bootstrapContext创建、环境准备、applicationContext准备、bean加载、runner调用五个步骤
- SpringBoot启动过程分为操作线和事件线(图中蓝色标识),操作线包括上面的五个步骤,而事件线负责事件触发,通知事件监听者
- 模块的自动装配类(Auto-configuration)实际上就是一个普通的@Configuration bean,被配置在META-INF/spring.factories中,AutoConfigurationImportSelector导入选择器通过SpringFactoriesLoader加载,在结合 @Conditional 对加载到的自动装配配置bean进行过滤,从而实现模块的自动装配(如果自动装配bean能够被ComponentScan扫描到,不配置到META-INF/spring.factories中也是会生效的)
- 图中红色框(application context refresh)为spring framework的核心流程,详情可以参考《Spring Framework核心详解》
自定义starter
- 定义自动装配类(注意加入装配条件注解)
@Configuration
@ConditionalOnClass(MyStarted.class)
public class MyStartedAutoConfigure {
}
- resource目录下添加META-INF目录并添加spring.factories文件
- spring.factories文件中添加配置项
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xxx.xxx.autoconfigure.MyStartedAutoConfigure
- 打包发布