refresh()
1、准备工作;
prepareRefresh();
2、创建beanFactory
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
但是还没有填充属性
3、对beanFactory填充属性
prepareBeanFactory(beanFactory);
4、PostProcessBeanFactory
没有具体实现方法,子类覆盖方法做额外的处理,此处我们自己一般不做任何拓展工作
5、调用各种beanFactory处理器
invokeBeanFactoryPostProcessors(beanFactory);
6、注册bean处理器
registerBeanPostProcessors(beanFactory);
只是注册,真正调用的是getBean方法
7、国际化处理
initMessageSource();
8、初始化事件监听多路广播器
initApplicationEventMulticaster();
9、初始化剩下的单实例(非懒加载的)
finishBeanFactoryInitialization(beanFactory);
beanFactory.preInstantiateSingletons();
实例化所有非懒加载对象
- List beanNames = new ArrayList<>(this.beanDefinitionNames);
- 将所有beandefintion的名字创建一个集合
版权声明:本文为Gsasuke原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。