UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Java】@PostConstructをつけてBean構築後にクラスで1度だけ実行される事前処理を行う

コンポーネントスキャンしてDIコンテナにBeanを登録する際、Bean構築後にクラスで1度だけ実行される事前処理を行いたい

この時、@PostConstructをつけるとよいことを知った

docs.oracle.com

以下のように該当メソッドに@PostConstructをつければ良い

 @Component
 public class MyComponent {
     
     @PostConstruct
     private void init() {
         初期化処理
     }

javadocにあるようにいくつか制約があり、

  • 基本的にこのメソッドには引数を持てない(InvocationContextオブジェクトを指定するインタセプタの場合を除く)
  • 戻り値はvoidでなければならない
  • PostConstructの適用先のメソッドは、public、protected、package privateまたはprivateにできる(finalにしても良い)
  • アプリケーション・クライアントの場合を除き、このメソッドをstaticにしてはいけない

この制約内であれば、@PostConstructをつけて初期化できるようになる