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