暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

快手1面:@PreDestroy 注解有什么作用?

猿java 2025-03-23
61

你好,我是猿java

点击关注公众号👇,获取:大厂简历指导和加技术群深度讨论!

在日常开发中,我们经常会使用@PreDestroy
注解来完成一些销毁的工作,那么,@PreDestroy
注解到底是什么?这篇文章我们来聊一道快手道面试题:@PreDestroy 注解是有什么作用?

1. 主要作用

首先,我们看看@PreDestroy
注解的源码,截图如下:

通过源码,我们可以看到@PreDestroy
注解只能用于方法上。从整体上看,@PreDestroy
注解的作用主要有下面两点:

  • 资源清理@PreDestroy
     方法可以用于清理资源,例如关闭数据库连接、释放文件句柄、停止线程等,以避免内存泄漏或其他资源浪费。
  • 自定义销毁操作:在 Bean 被销毁时执行一些特定的操作,比如记录日志、发送事件等。

2. 原理

为了更好地理解 @PreDestroy
注解的工作原理,我们通过下面三个步骤来分析。

  1. 生命周期管理:Spring 容器管理 Bean 的生命周期,包括创建、初始化、以及销毁。对于标注了 @PreDestroy
     的方法,Spring 会在容器关闭时自动调用这些方法。

  2. 反射机制:当 Spring 容器关闭时,它会通过反射查找那些被注解标记为 @PreDestroy
     的方法,并调用这些方法。

  3. 实现方式:通常情况下,@PreDestroy
     方法应该是 public 的,并且没有参数和返回值。Spring 根据这些标准来识别可以调用的方法。

为了更好地理解@PreDestroy
注解,我们来看一个简单的示例:

import javax.annotation.PreDestroy;
import org.springframework.stereotype.Component;

@Component
public class TestBean {
    // 其他业务逻辑
    @PreDestroy
    public void cleanup() {
        // 清理工作
        System.out.println("Cleaning up resources before shutdown");
    }
}

在这个示例中,当 Spring容器关闭时,会自动调用 cleanup
 方法,输出相关的清理信息。

3. 总结

本文,我们分析了@PreDestroy
注解的原理以及如何使用它,@PreDestroy是一
个比较简单
的知识点,
该注解主要是用于Spring容易销毁之前完成某些事情,它可以洁地管理 Bean的销毁过程,帮助我们开发者在容器关闭时进行必要的清理工作,从而保持应用的健壮性和资源的有效管理。


文章总结不易,求一键三连:点赞、转发、在看另外,为了方便大家更深入地进行技术交流,我维护了一个猿java内部的技术交流群,欢迎大家加群讨论。关注公众号「猿java」,回复「加群」即可。

文章转载自猿java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论