CommonAnnotationBeanPostProcessor 不仅可以识别 @Resource
注解,还可以识别 JSR-250 生命周期注解:javax.annotation.PostConstruct
和 javax.annotation.PreDestroy
。在 Spring 2.5 中引入,对这些注解的支持为 初始化回调 和 销毁回调 中描述的生命周期回调机制提供了一个替代方案。只要在 Spring 应用上下文中注册了 CommonAnnotationBeanPostProcessor
(在 xml 中也可以使用 _<_context:annotation-config_/>_
元素激活),携带这些注解之一的方法就会在生命周期中与相应的 Spring 生命周期接口方法或明确声明的回调方法在同一时间被调用。在下面的例子中,缓存在初始化时被预先填充,在销毁时被清除。
public class CachingMovieLister {
@PostConstruct
public void populateMovieCache() {
// 在初始化时填充电影缓存...
}
@PreDestroy
public void clearMovieCache() {
// 销毁时清除电影缓存...
}
}
有关组合各种生命周期机制的效果的详细信息,请参阅 组合生命周期机制。
:::tips 与 @Resource 一样,@PostConstruct 和 @PreDestroy 注解类型在 JDK 6 到 8 中是标准 Java 库的一部分。然而,整个 javax.annotation 包在 JDK 9 中从核心 Java 模块中分离出来,并最终在 JDK 11 中删除。如果需要,现在需要通过 Maven 中心获得 javax.annotation-api 工件,只需像其他库一样添加到应用程序的 classpath 中即可。 :::