记录并分享一下本人学习spring源码的过程,有什么问题或者补充会持续更新。欢迎大家指正!
环境: spring5.X + idea
建议:学习过程中要开着源码一步一步过
Spring中对象的创建宏观流程:
- 创建对象需要的基础数据:beanDefinition
在BeanFactory中getBean时做一下三步处理完成对象的创建
- 创建对象:AbstractAutowireCapableBeanFactory中
doCreateBean
createBeanInstance(beanName, mbd, args);
- 属性赋值:AbstractAutowireCapableBeanFactory中
doCreateBean
populateBean(beanName, mbd, instanceWrapper);
a. 配置文件<bean autowired= "bytype|byname"/> <beans default-autowired="bytype|byname"/>
- 对象初始化:AbstractAutowireCapableBeanFactory中
doCreateBean
initializeBean(beanName, exposedObject, mbd);