一、概述
该方法是实例化bean的主要方法,它实现的主要流程如下图所示。
这是方法执行的主要流程图。
具体执行流程如下图,我们将按照具体执行流程一个个介绍具体的方法。
二、主要方法
finishBeanFactoryInitialization内部调用了getBean方法。
getBean方法最总调用了AbstractBeanFactory的doGetBean方法。
transformedBeanName对bean的名称进行了转化。
getMergedLocalBeanDefinition方法将从xml中读取并形成的GenericBeanDefinition与父类的BeanDefinition进行融合形成了RootBeanDefinition。
之后调用createBean方法进行Bean的创建。
resolveBeforeInstantiation方法实行了实例化前的前置增强。
doCreateBean方法进行了bean的创建。
populateBean进行了属性的填充
populateBean还进行了实例化的后置增强。
initializeBean进行了bean的初始化。
initializeBean方法内部,调用了初始化前置增强和后置增强,并最终调用了初始化方法,完成了bean的创建流程。
参考文章:
https://www.cnblogs.com/lucidar/articles/17079257.html
spring源码系列-Bean的创建流程 - 简书
Spring官网阅读(四)BeanDefinition(上)(2)-阿里云开发者社区
mini-spring 源码阅读(一) bean的创建过程_weixin_46564779的博客-CSDN博客
Bean创建流程一(源码分析)_bean的创建流程_Mr_Liuxz的博客-CSDN博客