众所周知,Spring的核心包括IOC和AOP,分析spring源码之前,我们先来通过下图直观了解一下在bean的装载过程中IOC和AOP分别起到了哪些作用 (涉及到的Java类已用红色字体标出)。
上图展示的流程如下:
- 初始化BeanFactory
- BeanDefinitionReader将定义bean信息的文件读取到BeanDefinition中,生成bean定义信息
- 由多个BeanFactoryPostProcessor对bean的定义信息进行增强,并传入BeanFactory工厂
- BeanFactory工厂利用反射机制参与bean生命周期的创建过程(实例化bean、填充属性、初始化bean)
- 在填充属性和初始化bean之后会对bean进行AOP增强,(通过cglib和jdk两种方式)
- 最终获得完整的bean对象