Spring IOC 容器的加载过程(bean 的创建过程)
-
配置Bean
通过xml或者是@Component @Bean 等进行配置 -
解析Bean,得到BeanDefinition定义对象
通过 BeanDefintionReader 将 bean 进行解析,准备要创建的bean对象的定义对象BeanDefinition,存放到BeanDefintionMap 中,将beanName和bean值进行保存 -
实例化bean
BeanFactory通过反射的方式j将BeanDefinition定义对象实例化成具体的bean对象
注意:在这之前也可以进行beanFactoryPostProcessor(Bean的增强器)的处理,我们可以根据获取到的BeanDefinition 定义对象做特殊处理 -
初始化Bean
(1)填充属性: 通过populateBean 填充属性
(2)执行aware 接口所实现的方法:方便通过bean对象来获取容器中的属性值
(3)调用BeanPostProcessor前置处理方法:AOP等都在这里实现
(4)调用init-mehtod方法
(5)调用BeanPostProcessor的后置处理方法 -
生成Bean
通过getBean方法可以直接获取 -
销毁Bean
spring 自己处理