简单的教你看Spring Ioc 加载流程(部分!待更)

Spring Ioc 源码

1.实例化 AnnotationConfigApplicationContext 上下文容器;
2.实例化工厂 DefaultListableBeanFactory;
3.实例化建BeanDefinition读取器:AnnotatedBeanDefinitionReader。

  • 首先从JavaConfig中加载的AnnotationConfigApplicationContext启动方式:


    AnnotationConfigApplicationContext.png
  • 点进去之后就会发现AnnotationConfigApplicationContext构造方法调用的是当前的无参构造。


    this().png
  • 当调用AnnotationConfigApplicationContext无参构造的时候,会先调用父类GenericApplicationContext的无参构造方法。


    1.png
  • 父类的构造函数里面就是初始化了DefaultListableBeanFactory


    DefaultListableBeanFactory.png
  • DefaultListableBeanFactory又是什么?
    Spring 的 BeanFactory 定义了容器的基础概念、接口方法等,但是 DefaultListableBeanFactory 才是一个真正可以 new 出来的具体的容器,DefaultListableBeanFactory是相当重要的,从字面意思就可以看出它是一个Bean的工厂,是用来生产Bean 和获取Bean的


    DefaultListableBeanFactory关系树.png

    DefaultListableBeanFactory2.png

    其主要做了两件事:
    1)注册内置BeanPostProcessor (BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法)l
    2)注册相关的BeanDefinition (Spring顶层核心接口,封装了生产Bean的一切原料)


    AnnotatedBeanDefinitionReader.png

    注册Bean内置后置处理处理器.png

    BeanPostProcessor树图.png

    后置处理器回调方法.png

    思维导图.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容