使用 @PostConstruct@PreDestroy

CommonAnnotationBeanPostProcessor 不仅识别 @Resource 注解, 还识别 JSR-250 生命周期注解:jakarta.annotation.PostConstructjakarta.annotation.PreDestroy

引入的这些注解支持提供了 初始化回调销毁回调 中描述的生命周期回调机制的替代方案。 只要 CommonAnnotationBeanPostProcessor 在 Infra ApplicationContext 中注册, 带有这些注解之一的方法就会在生命周期的同一点被调用,就像相应的 Infra 生命周期接口方法或显式声明的回调方法一样。 在以下示例中,缓存将在初始化时预填充,并在销毁时清除:

  • Java

public class CachingMovieLister {

  @PostConstruct
  public void populateMovieCache() {
    // 初始化时填充电影缓存...
  }

  @PreDestroy
  public void clearMovieCache() {
    // 销毁时清除电影缓存...
  }
}

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

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