@PostConstruct および @PreDestroy の使用

CommonAnnotationBeanPostProcessor は、@Resource アノテーションだけでなく、JSR-250 ライフサイクルアノテーション ( jakarta.annotation.PostConstruct および jakarta.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 にあります。必要に応じて、jakarta.annotation-api アーティファクトは Maven Central から取得する必要があり、他のライブラリと同様にアプリケーションのクラスパスに追加するだけです。