你好,我是猿java
点击关注公众号👇,获取:大厂简历指导和加技术群深度讨论!
在日常开发中,我们经常会使用@PreDestroy
注解来完成一些销毁的工作,那么,@PreDestroy
注解到底是什么?这篇文章我们来聊一道快手道面试题:@PreDestroy 注解是有什么作用?
1. 主要作用
首先,我们看看@PreDestroy
注解的源码,截图如下:

通过源码,我们可以看到@PreDestroy
注解只能用于方法上。从整体上看,@PreDestroy
注解的作用主要有下面两点:
资源清理: @PreDestroy
方法可以用于清理资源,例如关闭数据库连接、释放文件句柄、停止线程等,以避免内存泄漏或其他资源浪费。自定义销毁操作:在 Bean 被销毁时执行一些特定的操作,比如记录日志、发送事件等。
2. 原理
为了更好地理解 @PreDestroy
注解的工作原理,我们通过下面三个步骤来分析。
生命周期管理:Spring 容器管理 Bean 的生命周期,包括创建、初始化、以及销毁。对于标注了
@PreDestroy
的方法,Spring 会在容器关闭时自动调用这些方法。反射机制:当 Spring 容器关闭时,它会通过反射查找那些被注解标记为
@PreDestroy
的方法,并调用这些方法。实现方式:通常情况下,
@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,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




