阅读spring源码时,注意到一个小细节,在核心方法refresh()中
我们都知道,bean的实例化发生在finishBeanFactoryInitialization(beanFactory)方法中
入上图,finishBeanFactoryInitialization(beanFactory)上有段小注释
Instantiate all remaining (non-lazy-init) singletons.
意思是实例化剩余的所有(非懒加载)的单实例,为什么要说是剩余的?难道还有一部分在前面已经被实例化了吗?
是的,早在invokeBeanFactoryPostProcessors(beanFactory)的时候,就已经实例化了一堆spring内部的bean了,也就是一堆在bean实例化前就要执行的各种BeanFactoryPostProcessor
正是因为在这个步骤已经实例化了一部分bean,所以注释才会说,是实例化剩余的所有bean.