本文最后更新于:2024年4月22日 下午
容器刷新的12大步,分析主流程refresh()的12大步骤的具体事项
第一步:prepareRefresh
准备上下文信息:初始化一些属性值 以及准备一些环境变量信息environment
PS:web应用就是在此将servlet 信息加载
第二步:obtainFreshBeanFactory
获取在this阶段创建好的 factory对象。
PS:xml的方式会在此时进行xml信息读取
第三步:prepareBeanFactory
准备一些必要的工具
如:El表达式,会忽略到实现aware接口,会准备ApplicationContextAwareProcessor
第四步:postProcessBeanFactory
留给子类增强
第五步:invokeBeanFactoryPostProcessors
执行BeanFactory增强,统一调用 PostProcessorRegistrationDelegate *装饰器模式,统一处理
第六步:registerBeanPostProcessors
注册所有的bean的后置处理器
第七步:initMessageSource
初始化国际化相关资源,这里没有会创建一个默认的国际化资源
第八步:initApplicationEventMulticaster
初始化事件派发功能
第九步:onRefresh
留给子类继续增强
第十步:registerListeners
注册监听器
第十一步:finishBeanFactoryInitialization
完成剩下的bean初始化,这里会调用bean的初始化流程,详情参考上一章节,过程中会有不断的BeanPostProcessor对功能增强
第十二步:finishRefresh
一些杂活清理缓存,事件派发等事情
流程图