框架初始化步骤:
配置资源加载器
配置primarysource
应用环境监测
配置系统初始化
配置应用监听
配置main方法所在类
框架启动
计时器开始计时
headless模拟赋值(没有显示器没有键盘)
发送ApplicationStartingEvent
配置环境模块
发送ApplicationEnviromentPreparedEvent
打印banner
创建应用上下文对象
初始化失败分析器
关联springboot组件与应用上下文对象
发送applicationContextInitializedEvent
加载sources到context
发送applicationpreparedevent
刷新上下文
计时器停止计时
发送applicationStartedevent
调用框架启动扩展类
发送applicationreadyevent
框架自动化装配
收集配置文件中的配置工厂类
加载组件工厂
注册组件内定义bean
自定义初始化器
实现ApplicationContextInitializer接口
springApplication类初始后设置进去
application.properties内填写接口实现
tips
order越小越先执行
applicatiion.properties先执行
系统初始化器解析
作用:上下文刷新即refresh方法前调用
用来编码设置一些属性变量通常用在web环境中
可以通过order接口来进行排序
监听器模式要素
事件 监听器 广播器 触发机制
Tips
实现ApplicationListener接口针对单一事件监听
实现SmartApplicationListenner接口针对多种事件监听
order越小越先执行
application.properties中定义的优先于其他方式
xml构造bean
无参构造
有参构造
静态工厂方法
实例工厂方法
优点:低耦合 对象关系清晰 集中管理
缺点:繁琐
@Component
@Bean
@FactoryBean
@BeanDefinitionRegistryPostProcessor
@ImportBeanDefinitionRegistrar 一定要在启动类加上import引入才能生效,可以不加@Component
prepareBeanFactory:
设置beanfacotry一些属性
添加后置处理器
设置忽略的制动装配接口
注册一些组件
postprocessBeanFactory
子类重写以在beanfactory完成创建后做进一步设置
registerBeanPostProcessors
找到beanpostProcessors的实现
排序后注册进容器
initApplicationEventMulticaster:
实例化流程
start->getBean->doGetBean->getSingleton->CreateBean->instantiate->instantiateBean->createBeanInstance->doCreateBean->resolveBeforeInstantiation->populateBean->end
banner
启动加载器解析
计时器介绍:
实现CommandLineRunner接口
实现ApplicationRunner接口
通过order指定执行顺序,order值相同ApplicationRunner实现优先CommandLineRunner
default优先级高
.properties配置文件的优先级高于.yml
aware介绍
beanNameAware
BeanClassloaderAware
BeanfactoryAware
EnviromeentAware
embeddedvalueresolverAware
resourceloaderaware
applicationeventpublisheraware
messagesourceaware
applicationcontextaware
environment解析
spring profile将不同的配置放在不同的环境中
application.properties
application-default.properties