使用 @PostConstruct@PreDestroy

CommonAnnotationBeanPostProcessor 不僅識別 @Resource 註解,還識別 JSR-250 生命周期註解:jakarta.annotation.PostConstructjakarta.annotation.PreDestroy。Spring 2.5 中引入的這些註解支援,為初始化回呼銷毀回呼中描述的生命週期回呼機制提供了替代方案。前提是 CommonAnnotationBeanPostProcessor 已在 Spring ApplicationContext 中註冊,則帶有這些註解之一的方法會在生命週期中的相同點調用,如同對應的 Spring 生命周期介面方法或明確宣告的回呼方法。在以下範例中,快取會在初始化時預先填充,並在銷毀時清除

  • Java

  • Kotlin

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

有關組合各種生命週期機制的影響的詳細資訊,請參閱組合生命週期機制

@Resource 類似,@PostConstruct@PreDestroy 註解類型是 JDK 6 到 8 標準 Java 程式庫的一部分。但是,整個 javax.annotation 套件在 JDK 9 中從核心 Java 模組中分離出來,最終在 JDK 11 中移除。從 Jakarta EE 9 開始,該套件現在位於 jakarta.annotation 中。如果需要,現在需要通過 Maven Central 取得 jakarta.annotation-api 構件,只需將其添加到應用程式的類路徑中,就像任何其他程式庫一樣。