0
点赞
收藏
分享

微信扫一扫

为什么是Instantiate all remaining (non-lazy-init) singletons,而不是Instantiate all (non-lazy-init

一点读书 2022-12-03 阅读 54

阅读spring源码时,注意到一个小细节,在核心方法refresh()中

我们都知道,bean的实例化发生在finishBeanFactoryInitialization(beanFactory)方法中

为什么是Instantiate all remaining (non-lazy-init) singletons,而不是Instantiate all  (non-lazy-init_spring


入上图,finishBeanFactoryInitialization(beanFactory)上有段小注释

Instantiate all remaining (non-lazy-init) singletons.

意思是实例化剩余的所有(非懒加载)的单实例,为什么要说是剩余的?难道还有一部分在前面已经被实例化了吗?

是的,早在invokeBeanFactoryPostProcessors(beanFactory)的时候,就已经实例化了一堆spring内部的bean了,也就是一堆在bean实例化前就要执行的各种BeanFactoryPostProcessor

为什么是Instantiate all remaining (non-lazy-init) singletons,而不是Instantiate all  (non-lazy-init_spring_02

正是因为在这个步骤已经实例化了一部分bean,所以注释才会说,是实例化剩余的所有bean.


举报

相关推荐

0 条评论