Abstract Application Context
2024-02-27 17:22:38 0 举报
AI智能生成
登录查看完整内容
spring启动流程
作者其他创作
大纲/内容
1.1 记录启动时间、设置启动标识
1.2 替换Environment中的占位符
prepareRefresh
2.1 refreshBeanFactory:子类必须实现此接口去完成配置文件的加载以及创建bean factory
obtainFreshBeanFactory
3.1 设置bean的类加载器
3.2 设置SPEL解析器
3.3 添加属性编辑器
ApplicationContextAwareProcessor
ApplicationListenerDetector
3.4 添加BeanPostProcessor
EnvironmentAware
EmbeddedValueResolverAware
ResourceLoaderAware
ApplicationEventPublisherAware
MessageSourceAware
ApplicationContextAware
3.5 维护需要忽略的依赖接口列表
BeanFactory.class
ResourceLoader.class
ApplicationEventPublisher.class
ApplicationContext.class
3.6 维护可解析的依赖列表
Environment
System property
System environment
3.7 注册和Environment相关的默认的bean
prepareBeanFactory
4.1 所有的bean definition都已经加载完毕,所有的bean都还没有被实例化,此时允许子类修改自己持有的bean factory
postProcessBeanFactory
5.1 查找并执行BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
5.2 查找并执行BeanFactoryPostProcessor#postProcessBeanFactory
invokeBeanFactoryProcessors
6.1 添加BeanPostProcessorChecker
6.2 查找并添加BeanPostProcessor
6.3 添加ApplicationListenerDetector
registerBeanPostProcessors
7.1 国际化相关
initMessageSource
8.1 初始化事件广播器
initApplicationEventMulticaster
9.1 空模版方法,子类可以初始化一些特定的bean
onRefresh
10.1 探测监听器并添加到事件广播器中
10.2 发布earlyApplicationEvents事件
registerListeners
11.1 探测并添加ConversionService
11.2 初始化LoadTimeWeaverAware bean
11.3 冻结bean定义的配置,不允许再修改
11.4 初始化剩下的非懒加载的单例bean
finishBeanFactoryInitialization
12.1 清理缓存
12.3 初始化LifecycleProcessor
12.3 调用LifecycleProcessor的onRefresh方法
12.4 发布上下文刷新完成事件
finishRefresh
13.1 销毁所有的单例bean
destroyBeans
14.1 清理反射相关的缓存
14.2 清理注解相关的缓存
14.3 清理ResolvableType的缓存
14.4 清理类加载器的缓存
resetCommonCaches
AbstractApplicationContext#refresh
0 条评论
回复 删除
下一页