使用 @PostConstruct
和 @PreDestroy
@PostConstruct
and @PreDestroy
CommonAnnotationBeanPostProcessor
不仅识别 @Resource
注解,还识别 JSR-250 生命周期注解:jakarta.annotation.PostConstruct
和 jakarta.annotation.PreDestroy
。这些注解的支持在 Spring 2.5 中引入,提供了一种替代生命周期回调机制的方法,如初始化回调和销毁回调中所述。只要 CommonAnnotationBeanPostProcessor
在 Spring ApplicationContext
中注册,带有这些注解的方法将在生命周期的同一点被调用,与相应的 Spring 生命周期接口方法或显式声明的回调方法相同。在以下示例中,缓存在初始化时预填充,并在销毁时清除:
- Java
- Kotlin
public class CachingMovieLister {
@PostConstruct
public void populateMovieCache() {
// populates the movie cache upon initialization...
}
@PreDestroy
public void clearMovieCache() {
// clears the movie cache upon destruction...
}
}
class CachingMovieLister {
@PostConstruct
fun populateMovieCache() {
// populates the movie cache upon initialization...
}
@PreDestroy
fun clearMovieCache() {
// clears the movie cache upon destruction...
}
}
有关组合各种生命周期机制的效果的详细信息,请参见组合生命周期机制。
备注
与 @Resource
类似,@PostConstruct
和 @PreDestroy
注解类型在 JDK 6 到 8 的标准 Java 库中是存在的。然而,整个 javax.annotation
包在 JDK 9 中从核心 Java 模块中分离,并最终在 JDK 11 中被移除。自 Jakarta EE 9 起,该包现在位于 jakarta.annotation
中。如果需要,现在需要通过 Maven Central 获取 jakarta.annotation-api
工件,只需像其他库一样将其添加到应用程序的类路径中。