乐趣区

源码剖析bean的生命周期

1.IOC 容器从 xml 文件、java 配置或注解配置中读取 BeanDefinition

2.BeanDefinition 分为普通 BeanDefinition 和特殊 BeanDefinition(实现 spring 指定的某些接口),IOC 容器会先实例化特殊 BeanDefinition,这些特殊对象调用特定接口(例如 BeanFactoryPostProcessor 接口、BeanPostProcessor 等),其中 BeanFactoryPostProcessor 可以动态的修改 BeanFactory 中的普通 BeanDefinition

3. 根据普通 BeanDefinition 实例化 bean, 即 Instantiation

4. 对 bean 进行属性赋值,即 Populate

5.bean 进行初始化,即 Initialization

6.bean 销毁,即 Destruction

第 3 - 5 步的流程图

InstantiationAwareBeanPostProcessor 是一种特殊的 BeanPostProcessor,spring aop 替换对象的时候是在 postProcessAfterInitialization 处理

退出移动版