Spring Ioc 源码
1.实例化 AnnotationConfigApplicationContext 上下文容器;
2.实例化工厂 DefaultListableBeanFactory;
3.实例化建BeanDefinition读取器:AnnotatedBeanDefinitionReader。
-
首先从JavaConfig中加载的AnnotationConfigApplicationContext启动方式:
-
点进去之后就会发现AnnotationConfigApplicationContext构造方法调用的是当前的无参构造。
-
当调用AnnotationConfigApplicationContext无参构造的时候,会先调用父类GenericApplicationContext的无参构造方法。
-
父类的构造函数里面就是初始化了DefaultListableBeanFactory
-
DefaultListableBeanFactory又是什么?
Spring 的 BeanFactory 定义了容器的基础概念、接口方法等,但是 DefaultListableBeanFactory 才是一个真正可以 new 出来的具体的容器,DefaultListableBeanFactory是相当重要的,从字面意思就可以看出它是一个Bean的工厂,是用来生产Bean 和获取Bean的
其主要做了两件事:
1)注册内置BeanPostProcessor (BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法)l
2)注册相关的BeanDefinition (Spring顶层核心接口,封装了生产Bean的一切原料)