Bean创建流程
- 通过最开始的关键时机点分析,我们知道Bean创建子流程入口在
AbstractApplicationContext#refresh()
方法的finishBeanFactoryInitialization(beanFactory)
处
- 进入
finishBeanFactoryInitialization
- 继续进入
DefaultListableBeanFactory
类的preInstantiateSingletons方法,我们找到下面部分的代码,看到工厂Bean或者普通Bean,最终都是通过getBean
的方法获取实例
- 继续跟踪下去,我们进入到了
AbstractBeanFactory
类的doGetBean方法,这个方法中的代码很多,我们直接找到核心部分
-
接着进入到
AbstractAutowireCapableBeanFactory
类的方法,找到以下代码部分
-
进入doCreateBean方法看看,该方法我们关注两块重点区域
-
创建Bean实例,此时尚未设置属性
- 给Bean填充属性,调用初始化方法,应用
BeanPostProcessor
后置处理器
参考资料《Spring高级源码笔记》
需要的同学可以私信
获取免费获取方式!
网友评论