Spring 框架中 Bean 的销毁方法一般有两种实现方式:
- 实现 DisposableBean 接口,并在 destroy() 方法中进行销毁操作。
public class MyBean implements DisposableBean {
@Override
public void destroy() throws Exception {
// 执行销毁操作
}
}
- 使用 @PreDestroy 注解或指定 destroy-method 属性,然后在指定的方法中进行销毁操作。
public class MyBean {
@PreDestroy
public void destroy() {
// 执行销毁操作
}
}
对于 singleton 作用域的 Bean,当 Spring 容器关闭时,会触发 Bean 的销毁方法。对于 prototype 作用域的 Bean,Spring 容器不会自动销毁,需要在使用该 Bean 的代码中手动进行销毁。
在销毁 Bean 时,Spring 容器会按照 Bean 的依赖关系反向执行销毁操作。例如,假设 Bean A 依赖 Bean B,那么在销毁时,Spring 容器会先销毁 Bean A,再销毁 Bean B。
需要注意的是,使用 @PreDestroy 注解或指定 destroy-method 属性的方式只适用于普通的 Bean。对于一些特殊的 Bean,例如实现了 FactoryBean 接口的 Bean,销毁时需要按照特殊的方式处理。因此,在编写销毁方法时需要根据具体的情况进行处理。