无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(disposablebean) 关于Springboot的扩展点DisposableBean的原理解析 DisposableBean: Bean 销毁时执行逻辑 全网首发(图文详解1)

前沿技术 Micheal 5个月前 (06-13) 50次浏览 已收录 扫描二维码

(disposablebean) 关于Springboot的扩展点DisposableBean的原理解析

DisposableBean 是 Spring 中提供的一个可以让 Bean 在销毁阶段执行一段特定逻辑的扩展点,其常用在资源释放或者其他清理工作中。默认当 Spring 容器关闭的时候,它会被执行。

要使用 DisposableBean,你需要做的是:

  • 在你的 Bean 中实现 DisposableBean 接口
@Component
public class MyBean implements DisposableBean {

    @Override
    public void destroy() throws Exception {
        // Bean 销毁时执行的逻辑
    }
}
  • 在 Bean 销毁时,”destroy” 方法就会被 Spring 容器调用。

详细的解析:当 Spring 创建一个 Bean 对象后,它会依据该 Bean 是否实现了 DisposableBean 接口来决定是否需要管理 Bean 的生命周期。如果当前 Bean 实现了 DisposableBean 接口,那么在关闭容器或者被标记为 @Scope(“prototype”) 的 Bean 不再被引用时,Spring 就会自动调用其 “destroy” 方法,从而让我们有机会进行特定的资源释放。

要解释一下 @Scope(“prototype”):
如果一个 Bean 被定义为 Singleton(单例,默认)作用于,Spring IoC 容器在初始化时会实例化这个 Bean,并且在整个容器的生命周期内只会存在一个实例。而如果被定义为 Prototype(原型)作用于,那么每当请求时都会创建一个新的 Bean 实例。

在使用 DisposableBean 接口的时候需要注意,如果你的 Bean 同时配置了 “destroy-method” 属性或者 @PreDestroy 注解,那么 DisposableBean 的 “destroy” 方法将被最后调用。因此,如果你不希望 “destroy” 方法被执行多次,你可以只选择其中一种方式。

此外,在 Spring Boot 中我们更加推荐使用 @PreDestroy 注解来代替 DisposableBean,因为这是来自于 JSR-250 的 Java 标准,而非 Spring 独有的,更具有通用性。

@Component
public class MyBean {

    @PreDestroy
    public void release() throws Exception {
        // Bean 销毁时执行的逻辑
    }
}

以上就是 DisposableBean 扩展点的原理以及如何使用或实现的详细解析和开发流程。
(java fastjson) 一文弄懂fastjson Fastjson库简介:阿里巴巴开源高性能JSON库 全网首发(图文详解1)
(midjourney –iw) midjourney iw指令怎么用? Midjourney中19个常用命令参数汉化详解 对不起我无法找到关于Midjourney Iw指令的任何相关信息 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝