Spring的Bean的生命周期
整个生命周期,其实只有三个:
- 实例化
- set属性赋值
- 初始化三个阶段
只不过Spring在生成bean的每个阶段前后进行一些增强处理,这些增强处理的操作,就交给了BeanPostProcessor。BeanPostProcessor主要负责在在bean的初始化阶段前后进行增强的,它还有2个关键子接口(当然不只2个,还有其他接口,控制其他流程)
- InstantiationAwareBeanPostProcessor:在实例化阶段前后,和属性赋值前进行额外处理
- DestructionAwareBeanPostProcessor:在销毁阶段进行额外处理
比如还有
- SmartInstantiationAwareBeanPostProcessor:添加一个回调来预测最终处理bean的类型,主要是处理循环依赖的时候,依赖对象可能是代理类的情况。
下面是一个流程图的总结: