对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-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到8的标准Java库的一部分。然而,整个javax.annotation包在JDK 9中从核心Java模块中分离出来,并最终在JDK 11中被删除。自Jakarta EE 9以来,该包现在位于jakarta.annotation中。如果需要,现在可以通过Maven Central获取jakarta.annotation-api工件,只需像添加其他库一样将其添加到应用程序的类路径中。spring-doc.cadn.net.cn