# bean 生命周期梳理

##### 一、生命周期梳理

1. 实例化前 【***InstantiationAwareBeanPostProcessor***】   
    在实例化目标bean之前应用此BeanPostProcessor。返回的bean对象可能是要使用的代理，而不是目标bean，从而有效地抑制了目标bean的默认实例化。  
    如果此方法返回非null对象，则bean创建过程将短路。应用的唯一进一步处理是来自配置的BeanPostProcessors的postProcessAfterInitialization回调
2. 实例化
3. 实例化后 【***InstantiationAwareBeanPostProcessor***】在bean实例化后，通过构造函数或工厂方法，但在Spring属性填充（从显式属性或自动布线）发生之前执行操作。  
    这是在Spring的自动布线开始之前，对给定的beainstance执行自定义字段注入的理想回调。
4. 属性赋值
5. 初始化前 【***BeanPostProcessor***】
6. 初始化
7. 初始化后 【***BeanPostProcessor***】
8. 注册销毁相关的回调接口
9. 使用
10. 销毁
11. \* 1、推断构造函数
    
    \* 2、实例化
    
    \* 3、填充属性（依赖注入）
    
    \* 4、处理 Aware 回调
    
    \* 5、初始化前（如果某个方法有@**PostConstruct**)
    
    \* 6、初始化 （实现 **InitializingBean**)
    
    \* 7、初始化后（**AOP** 代理）
    
    \* 8、容器销毁

##### 二、图例说明

[![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2024-05/scaled-1680-/S2wimage.png)](http://wiki.shopqorg.com/uploads/images/gallery/2024-05/S2wimage.png)