Spring Bean 的生命周期 ?

本文将从以下两方面去帮助理解 Bean 的生命周期:

  • 生命周期的概要流程:对 Bean 的生命周期进行概括,并且结合代码来理解;

  • 扩展点的作用:详细介绍 Bean 生命周期中所涉及到的扩展点的作用。

生命周期的概要流程

Bean 的生命周期概括起来就是 4 个阶段:

  • 实例化(Instantiation);

  • 属性赋值(Populate);

  • 初始化(Initialization);

  • 销毁(Destruction)。

  • 实例化:第 1 步,实例化一个 bean 对象;

  • 属性赋值:第 2 步,为 bean 设置相关属性和依赖;

  • 初始化:第 3~7 步,步骤较多,其中第 5、6 步为初始化操作,第 3、4 步为在初始化前执行,第 7 步在初始化后执行,该阶段结束,才能被用户使用;

  • 销毁:第 8~10步,第8步不是真正意义上的销毁(还没使用呢),而是先在使用前注册了销毁的相关调用接口,为了后面第9、10步真正销毁 bean 时再执行相应的方法。

最后总结下如何记忆 Spring Bean 的生命周期:

  • 首先是实例化、属性赋值、初始化、销毁这 4 个大阶段;

  • 再是初始化的具体操作,有 Aware 接口的依赖注入、BeanPostProcessor 在初始化前后的处理以及 InitializingBean 和 init-method 的初始化操作;

  • 销毁的具体操作,有注册相关销毁回调接口,最后通过DisposableBean 和 destory-method 进行销毁。