本文主要是介绍PostConstruct和PreDestroy失效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:PostConstruct 和 PreDestroy 失效
说明
今天遇到问题,在使用 Spring的两个注解的过程当中,出现了失效的情况。
也就是 @PostConstruct 和 @PreDestroy 出现了失效的问题。
那么这两个注解主要是用来干嘛的呢?
@PostConstruct 主要是定义在方法上面,是bean生命周期的 初始化方法 (出生)
@PreDestroy 主要是定义在方法上面,是bean生命周期 销毁的方法 (死亡)
但是在编写代码的过程当中,这里的两个注解却失效了。
下面是代码片段展示
原因
后来我们发现,出现这个问题,最主要的原因竟然是因为 JDK版本的原因导致的,当前我的 JDK使用的是 JDK11的版本,但是这两个注解支持的JDK8,在高版本当中,这里的两个注解失效了。
后期查阅资源,得到的结论是 这些内容,可能会涉及到 Spring 底层源码的介绍,才能充分解释这类问题。
那么眼下的解决方案,主要有两种。
【1】方案一: 更换低版本的 JDK8 的环境,达到 注解匹配的效果
【2】方案二: 不去更换JDK的版本,依旧使用 JDK11,反而采用 配置依赖的方式
解决
这里我采用的是 配置依赖的方式,在 pom.xml 文件当中,配置依赖,支持高版本的 JDK注解
代码如下:
<!-- 高版本的JDK 不支持@PostConstruct 和 @PreDestroy,需要添加依赖 -->
<dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.3.2</version>
</dependency>
配图如下
参考
本篇文章,主要参考了其他博主的资料,配合自己经验小结,参考文章如下:
https://blog.csdn.net/qq_39965727/article/details/104045169
https://blog.csdn.net/YKenan/article/details/109748272
这篇关于PostConstruct和PreDestroy失效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!