- 1,prepareRefresh : 替换变量,校验必须的属性是否已设置
- 2,获取bean工厂:如果已经存在销毁重建,设置bean是否可覆盖可以循环依赖,将配置文件转化为BeanDefinition
- 3,准备bean工厂,设置类加载器,增加BeanPostProcessor,配置忽略的依赖,BeanFactory\ResourceLoader\ApplicationEventPublisher\ApplicationContext依赖解析,
注册默认的环境bean。 - 4,注册BeanFactoryPostProcessor
- 5,触发BeanFactoryPostProcessor.postProcessorBeanFactory()方法,织入器检测
- 6,注册BeanPostPorcessor
- 7, 初始化messageSource 国际化,初始化事件广播器
- 8,子类扩展
- 9,注册监听器
- 10,准备\校验bean覆盖,实例化bean(有参无参构造函数等),注入属性,触发回调函数(Aware(BeanNameAware,BeanClassLoaderAware,BeanFactoryAware)
,BeanPostProcessorsBeforeInitialization,org.springframework.beans.factory.InitializingBean#afterPropertiesSet , init ,applyBeanPostProcessorsAfterInitialization) - 11,发布容器刷新完成事件。