1. ホーム
  2. spring

[解決済み] Spring @PostConstruct と init-method 属性の比較

2022-08-31 21:33:52

質問

を使用するのとでは、何か違いがあるのでしょうか? @PostConstruct アノテーションを使用することと、同じメソッドを init-method と同じメソッドをSpring XMLのコンフィギュレーションで宣言しますか?

どのように解決するのですか?

実質的に差はないと思いますが、動作の優先順位があります。 @PostConstruct , init-method はBeanPostProcessorです。

  1. @PostConstruct はJSR-250のアノテーションであるのに対し init-method は Spring の初期化メソッドです。
  2. もしあなたが @PostConstruct メソッドがある場合、これは初期化メソッドが呼ばれる前に最初に呼ばれます。
  3. あなたのBeanがInitializingBeanを実装し、オーバーライドする場合は afterPropertiesSet をオーバーライドする場合、最初に @PostConstruct が呼び出され、次に afterPropertiesSet が呼び出され、次に init-method .

より詳細な情報は、Springの の参照ドキュメントをご覧ください。 .

JSR 250仕様の前は、xmlのinit-methodの使用が推奨されていました。これはJavaクラス(Bean)をspring特有のクラスやアノテーションから切り離すためです。

Java EEにJSR 250仕様が導入され、springがこれらのアノテーションをサポートするようになり、springフレームワークへの依存度はある程度まで下がりました。

しかし、これらの追加によってコードの可読性が向上したことは認めざるを得ません。