当前位置 博文首页 > 琦小虾的代码世界:Spring 之 BeanFactory 核心:getBean 方法的

    琦小虾的代码世界:Spring 之 BeanFactory 核心:getBean 方法的

    作者:[db:作者] 时间:2021-08-12 15:10

    Spring 之 BeanFactory 核心:getBean 方法的流程——前言

    参考地址:
    《Spring核心之BeanFactory 一张图看懂getBean全过程.》

    前言

    笔者最近在工作空闲时间研究 Spring 的生命周期部分,好奇之下也总结了《Spring 中 BeanFactory 的生命周期与源码解析(附例程)》。然而对于 Spring 框架如何获取一个 Bean 的过程,笔者并没有从源码级别实现理解。于是笔者便开始从 AbstractBeanFactory # doGetBean 方法进行研究。
    即使将 doGetBean 方法阅读完毕,依旧没有完全明白 Bean 是如何从一个 XML 文件转换成具体的 Object 对象的,更何况中间还实现了依赖注入的思想。在翻阅资料的过程中,笔者翻阅到了一篇博文:《Spring核心之BeanFactory 一张图看懂getBean全过程.》,该文章开头一张惊天地泣鬼神的配图震惊到了笔者…… 于是笔者从该篇文章开始,按照该图的思路,进行逐步的分析。


    按照该文的封页图的思路,可将 BeanFactory 创建对象分为四个主要流程:

    1. 获取 Bean:最外层方法
      • AbstractBeanFactory # doGetBean
    2. 创建 Bean:
      • AbstractAutowireCapableBeanFactory # createBean
      • AbstractAutowireCapableBeanFactory # doCreateBean
      • AbstractAutowireCapableBeanFactory # createBeanInstance
    3. 填充 Bean:
      • AbstractAutowireCapableBeanFactory # populateBean
    4. 初始化 Bean:
      • AbstractAutowireCapableBeanFactory # initializeBean

    本系列文章按照上述行文思路进行书写。

    前言部分以《Spring核心之BeanFactory 一张图看懂getBean全过程.》的封页图镇尾。

    BeanFactory 创建对象的流程图

    原谅我当时看到这张图就跪了下来……

    cs