spring.factories介绍
位置:META-INF/spring.factories
功能:spring boot启动时会加载这个文件夹中内容,以key-value方式存储每种类型对应的执行类的集合,根据启动的生命周期,调用不同key对应的集合
spring.factories支持的key
key完整名 |
org.springframework.beans.BeanInfoFactory |
org.springframework.boot.diagnostics.FailureAnalyzer |
org.springframework.boot.env.EnvironmentPostProcessor |
org.springframework.boot.SpringApplicationRunListener |
org.springframework.context.ApplicationContextInitializer |
org.springframework.boot.env.PropertySourceLoader |
org.springframework.context.ApplicationListener |
org.springframework.boot.diagnostics.FailureAnalysisReporter |
org.springframework.boot.SpringBootExceptionReporter |
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter |
org.springframework.boot.autoconfigure.AutoConfigurationImportListener |
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider |
org.springframework.boot.autoconfigure.EnableAutoConfiguration |
扩展点调用顺序
序号 | 类(key) | 参数/方法 | 触发时机 |
1 | ApplicationListener | ApplicationStartingEvent | 服务准备启动 |
2 | SpringApplicationRunListener | starting | 服务准备启动 |
3 | PropertySourceLoader | getFileExtensions/load | 加载自定义后缀的配置(文件名要spring规范,后缀loader中指定) |
5 | ApplicationListener | ApplicationEnvironmentPreparedEvent | 环境创建完 |
6 | SpringApplicationRunListener | environmentPrepared | 环境创建完 |
7 | ApplicationContextInitializer | AnnotationConfigServletWebServerApplicationContext | 上下文初始化中,此处可修改context上下文内容 |
8 | ApplicationListener | ApplicationContextInitializedEvent | 上下文初始化完 |
8 | SpringApplicationRunListener | contextPrepared | 上下文初始化完 |
9 | SpringApplicationRunListener | contextLoaded | 刷新前 |
10 | ApplicationListener | ApplicationPreparedEvent | 上下文加载完成 |
11 | SpringApplicationRunListener | contextLoaded | 上下文加载完成 |
12 | BeanInfoFactory | | |
13 | AutoConfigurationImportFilter | autoConfigurationClasses(参数所有自动配置类) | 返回需要排除的自动配置类 |
14 | TemplateAvailabilityProvider | isTemplateAvailable | |
15 | BeanInfoFactory | | |
16 | TemplateAvailabilityProvider | isTemplateAvailable | |
17 | EnableAutoConfiguration | -- | 加载自动配置类 |
18 | ApplicationListener | ServletWebServerInitializedEvent | web服务初始化完成 |
19 | ApplicationListener | ContextRefreshedEvent | 上下文刷新完成 |
20 | ApplicationListener | ApplicationStartedEvent | 应用启动完成 |
21 | ApplicationListener | AvailabilityChangeEvent | 记录应用程序处于活动中 |
22 | ApplicationListener | ApplicationReadyEvent | |
23 | ApplicationListener | AvailabilityChangeEvent | 标记应用程序已准备就绪,可以处理请求 |
spring boot启动流程图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402174510154.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODM0NDM=,size_16,color_FFFFFF,t_70#pic_center)
EnableAutoConfiguration 加载流程图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402174543760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA4ODM0NDM=,size_16,color_FFFFFF,t_70#pic_center)