使用 @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到JDK 8都是标准Java库的一部分。然而,在JDK 9中,整个javax.annotation包被从核心Java模块中分离出来,并最终在JDK 11中被移除。从Jakarta EE 9开始,这个包现在位于jakarta.annotation中。如果需要使用这些注解,可以通过Maven Central获取jakarta.annotation-api artifact,然后像添加其他库一样将其添加到应用程序的类路径中。