跳到主要内容

使用 @PostConstruct@PreDestroy

ChatGPT-4o 中英对照 Using @PostConstruct and @PreDestroy Using @PostConstruct and @PreDestroy

CommonAnnotationBeanPostProcessor 不仅识别 @Resource 注解,还识别 JSR-250 生命周期注解:jakarta.annotation.PostConstructjakarta.annotation.PreDestroy。这些注解的支持在 Spring 2.5 中引入,提供了一种替代生命周期回调机制的方法,如初始化回调销毁回调中所述。只要 CommonAnnotationBeanPostProcessor 在 Spring ApplicationContext 中注册,带有这些注解的方法将在生命周期的同一点被调用,与相应的 Spring 生命周期接口方法或显式声明的回调方法相同。在以下示例中,缓存在初始化时预填充,并在销毁时清除:

public class CachingMovieLister {

@PostConstruct
public void populateMovieCache() {
// populates the movie cache upon initialization...
}

@PreDestroy
public void clearMovieCache() {
// clears the movie cache upon destruction...
}
}
java

有关组合各种生命周期机制的效果的详细信息,请参见组合生命周期机制

备注

@Resource 类似,@PostConstruct@PreDestroy 注解类型在 JDK 6 到 8 的标准 Java 库中是存在的。然而,整个 javax.annotation 包在 JDK 9 中从核心 Java 模块中分离,并最终在 JDK 11 中被移除。自 Jakarta EE 9 起,该包现在位于 jakarta.annotation 中。如果需要,现在需要通过 Maven Central 获取 jakarta.annotation-api 工件,只需像其他库一样将其添加到应用程序的类路径中。