对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

使用 @PostConstruct@PreDestroy

CommonAnnotationBeanPostProcessor 不仅识别 @Resource 注解,还识别 JSR-250 生命周期注解:jakarta.annotation.PostConstructjakarta.annotation.PreDestroy。Spring 2.5 引入的对这些注解的支持,为 初始化回调销毁回调 中描述的生命周期回调机制提供了一种替代方案。只要 CommonAnnotationBeanPostProcessor 在 Spring ApplicationContext 中注册,携带其中任一注解的方法将在生命周期的相同时间点被调用,其行为等同于对应的 Spring 生命周期接口方法或显式声明的回调方法。以下示例展示了缓存如何在初始化时预填充,并在销毁时清空:spring-doc.cadn.net.cn

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...
	}
}

有关组合使用各种生命周期机制的效果的详细信息,请参阅 组合生命周期机制spring-doc.cadn.net.cn

@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 工件,并像其他任何库一样将其添加到应用程序的类路径中。spring-doc.cadn.net.cn