私たちの Bean の 1 つで、メモリ内のファイルベースのデータを読み込んでいます。
ApplicationContextListener からこれを行う方がよいでしょうか。たとえば、Bean の init() メソッドを呼び出すか、この init() メソッドに @PostConstruct を追加してコンテナが自動的に実行するようにしますか?
私たちの Bean の 1 つで、メモリ内のファイルベースのデータを読み込んでいます。
ApplicationContextListener からこれを行う方がよいでしょうか。たとえば、Bean の init() メソッドを呼び出すか、この init() メソッドに @PostConstruct を追加してコンテナが自動的に実行するようにしますか?
以下を使用できます。
1. @PostConstruct
2.InitializingBean
インターフェイス
3.<bean class="your bean class" init-method="your init method"/>
属性 : init-method : Bean プロパティの設定後に呼び出すカスタム初期化メソッドの名前。メソッドは引数を持たない必要がありますが、例外をスローする可能性があります。これは、Spring の InitializingBean インターフェースを実装するか、メソッドを PostConstruct アノテーションでマークする代わりの方法です。
それらは代替手段です: プログラムに完全に注釈が付けられている場合は注釈を使用し、XML を使用している場合は XML を使用します (私は混合が好きではないので、annot または xml を使用して機能を実装するかどうかを自問する必要はありません)。
編集:
InitializingBean
または@PostConstruct
: bean が作成されるたびに呼び出される bean のライフサイクルに適用します (スコープによって異なります)コンテキストリスナーを使用する場合:
あなたInitializingBean
と:
あなたの場合、lazy-init なしでシングルトン Bean を使用していて、障害が発生した場合のエラー回復が必要ない場合、違いはまったくありません。