コンポーネントスキャンしてDIコンテナにBeanを登録する際、Bean構築後にクラスで1度だけ実行される事前処理を行いたい
この時、@PostConstruct
をつけるとよいことを知った
以下のように該当メソッドに@PostConstruct
をつければ良い
@Component public class MyComponent { @PostConstruct private void init() { 初期化処理 }
javadocにあるようにいくつか制約があり、
- 基本的にこのメソッドには引数を持てない(InvocationContextオブジェクトを指定するインタセプタの場合を除く)
- 戻り値はvoidでなければならない
- PostConstructの適用先のメソッドは、public、protected、package privateまたはprivateにできる(finalにしても良い)
- アプリケーション・クライアントの場合を除き、このメソッドをstaticにしてはいけない
この制約内であれば、@PostConstruct
をつけて初期化できるようになる