1、简介

Spring 允许我们在 Bean 的创建和销毁时执行自定义操作。例如,可以让 Bean 实现 InitializingBeanDisposableBean 接口,从而在创建和销毁时触发回调方法。

本文将带你了解第二种实现方式,即使用 @PostConstruct@PreDestroy 注解。

2、@PostConstruct

Spring 只会在 Bean 属性初始化后调用一次注解了 @PostConstruct 的方法。即使没有任何属性需要初始化,这些方法也会运行。

使用 @PostConstruct 注解的方法可以用任何访问级别,但不能是静态的。

3、@PreDestroy

在 Spring 将 Bean 从 Application Context 中删除之前,会运行一次注解了 @PreDestroy 的方法。

@PostConstruct 一样,注解为 @PreDestroy 的方法可以有任何访问级别,但不能是静态的

4、用 javax.annotation 还是 jakarta.annotation?

从 JDK 6 到 JDK 8,@PostConstruct@PreDestroy 注解是标准 Java 库中 javax.annotation 包的一部分。但是,从 JDK 9 开始,整个 javax.annotation 包从核心 Java 模块中移除,并在 JDK 11 中完全取消。在 Jakarta EE 9 中,该包被重新命名为 jakarta.annotation

因此,到底应该使用 javax.annotation 还是 jakarta annotation 的注解?这取决于使用的 Spring 版本。

Spring、JDK、javax 和 jakarta 命名空间之间的兼容性如下表:

Spring 版本

JDK 版本

Java / Jakatar 命名空间

6.1.x

JDK 17 to JDK 23

jakarta

6.0.x

JDK 17 to JDK 21

jakarta

5.3.x

JDK 8 to JDK 21

javax

文章作者: 落叶知秋
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 落叶知秋
学习笔记 默认分类 Java SpringBoot 后端
喜欢就支持一下吧