Spring Bean 的生命周期包括以下阶段:
- 实例化(Instantiation):
○ 当容器接收到创建 Bean 的请求时,会实例化 Bean 对象。这可以通过构造函数实现。 - 属性设置(Population of Properties):
○ 容器在实例化 Bean 后,会通过 setter 方法或字段直接注入依赖的属性。 - BeanPostProcessor 的前置处理(BeanPostProcessor Pre-Initialization):
○ 在 Bean 的初始化之前,BeanPostProcessor 接口提供了定制化 Bean 初始化逻辑的机会。 - 初始化(Initialization):
○ 在 Bean 实例化和属性设置后,Spring 容器会调用特定的初始化方法,这可以是通过配置文件中指定的 init 方法或者是实现 InitializingBean 接口的 afterPropertiesSet() 方法。 - BeanPostProcessor 的后置处理(BeanPostProcessor Post-Initialization):
○ 在 Bean 初始化完成后,BeanPostProcessor 接口提供了另一个定制化 Bean 初始化逻辑的机会。 - 使用(In Use):
○ Bean 已经初始化完成,可以被应用程序使用,提供所需的服务。 - 销毁(Destruction):
○ 当容器关闭时,会调用 Bean 的销毁方法,这可以是通过配置文件中指定的 destroy 方法或者是实现 DisposableBean 接口的 destroy() 方法。
示例代码:
java
public class MyBean implements InitializingBean, DisposableBean {
public void afterPropertiesSet() throws Exception {
// 执行初始化逻辑
}
public void destroy() throws Exception {
// 执行销毁逻辑
}
// 自定义初始化方法
public void myInitMethod() {
// 自定义初始化逻辑
}
// 自定义销毁方法
public void myDestroyMethod() {
// 自定义销毁逻辑
}
}
通过实现 InitializingBean 和 DisposableBean 接口或者指定初始化和销毁方法,可以自定义 Bean 的初始化和销毁逻辑。理解 Spring Bean 的生命周期有助于控制 Bean 的创建和销毁过程,以及在需要时执行特定的初始化和清理操作。