锁定容器,以免在刷新过程中发生启动或销毁容器的操作。
同步(this.startupshutdownmonitor )2.准备工作记录容器的启动时间、“已启动”状态的标记以及处理配置文件中的占位符。
prepareRefresh (; 3 .初始化3.beanfactory,首先创建DefaultListableBeanFactory实例,然后将配置信息解析为beanDefinition,再将beanName - beanDefinition的concurrent harent hanfactior
configurablelistablebeanfactorybeanfactory=obtainfreshbeanfactory (; 4.BeanFactory后处理器处理。
前面板工厂; 加载和注册Bean,添加特殊的BeanFactoryPostProcessor实现类或做点什么。
postprocessbeanfactory; 6.BeanPostProcessor的实现和注册。
invokebeanfactorypostprocessors (beanfactory; 注册beanfactory (beanfactory; 7 .初始化和处理上下文的消息源。
initMessageSource (; 8 .挂接方法初始化特殊的Bean。
onRefresh (; 9 .注册事件侦听器,检查监听Bean,然后在容器中注册。
注册监听器(; 10 .初始化所有单实例Bean,根据Bean类型在AbstractBeanFactory的getBean ()中检索,然后创建Bean ) )。 创建bean实例(参数封装)
finishbeanfactoryinitialization (beanfactory ); 11 .宣布广播活动,结束刷新过程。
完成刷新(;
参考: Spring IOC容器源代码分析