原发布于个人公众号 rice 若初见似少年 2020-09-12 20:28
springboot自动装配
spring framework时代的装配标签@Import @ComponentScan
springboot时代 @EnableAutoConifguration
解析工作由以下类完成publicclassAutoConifgurationImportSelectorimplementsDeferredImportSelector{@OverridepublicString[]selectImports(AnnotationMetadata annotationMetadata){ ....... }}
通过SpringFactoriesLoader读取META-INF/spring.factories指定的类的实现类
通过注解属性exclude和excludeName来排除配置class
实现接口AutoConfigurationImportListener(springboot1.5引入)可以监听到配置class的事件,在配置class读取完成后触发
配置class排序@AutoConfigurationOrder @AutoConfigurationBefore @AutoConfigurationIAfter
自定义springboot自动装配
略
@Conditonal派生的注解@ConditonalOnClass@ConditonalOnMissingClass@ConditonalOnBean@ConditonalOnMissingBean@ConditonalOnProperty@ConditonalOnResource@ConditonalOnWebApplication@ConditonalOnNotWebApplication@ConditonalOnExpression
SpringApplication生命周期
1.初始化阶段
构造阶段
配置阶段
2.运行阶段
准备阶段
上下文启动阶段
上下文启动后阶段
3.结束阶段
正常结束
异常结束
构造过程
获取web应用的类型,webApplicationType=SERVLET/REACTIVE/NONE
加载spring应用上下文初始化器(ApplicationContextInitialier)
加载spring应用事件监听器(ApplicationListener)
获取应用引导主类 mainApplicationClass
配置阶段
该阶段是前一阶段的补充,主要是提供SpringApplication和SpringApplicationBuilder的API给开发者使用。
运行准备阶段
从run方法到prepareContext
理解SpringApplicationRunListener监听方法:starting()应用启动environmentPrepared环境准备完成contextPrepared上下文准备完成contextLoaded上下文加载完成started上下文已启动,bean已初始化完成running应用运行中failed应用运行失败EventPublishingRunListener是spring内建唯一实现理解Spring事件监听机制理解SpringBoot事件监听机制
1.封装入参为ApplicationArguments
2.准备运行环境ConfigurableEnvironment
3.创建应用上下文ConfigurableApplicationContext
4.准备应用上下文prepareContext
4.1.设置运行环境
4.2.上下文后置处理
4.3.应用上下文初始化器ApplicationContextInitialier
4.4.执行SpringApplicationRunListener.contextPrepared
4.5.注册SpringBoot bean
4.6.合并Spring应用上下文配置源
4.7.加载Spring应用上下文配置源
4.8.回调SpringApplicationRunListener.contextLoaded
上下文启动阶段
由refreshContext方法实现
上下文启动后阶段
由afterRefresh方法实现,提供未实现的方法给开发者做扩展实现
正常结束
略
异常结束
FailureAnalyzers
FailureAnalysisReporter
应用退出
注册shutdownHook
网友评论