Spring Core認定について勉強しています。SpringがBeanのライフサイクルをどのように処理するか、特にBeanポストプロセッサについては疑問があります。
だから私はこのスキーマを持っています:
それが何を意味するかは私にはかなり明らかです:
次の手順は、Bean定義のロード段階で行われます。
@Configurationのクラスが処理され、および/または@Componentsがスキャンされ、および/またはXMLファイルが解析されます。
BeanFactoryに追加されたBean定義(それぞれはそのIDでインデックスが付けられます)
呼び出された特別なBeanFactoryPostProcessor Beanは、任意のBeanの定義を変更できます(たとえば、プロパティー-プレースホルダー値の置換用)。
次に、次の手順がBean作成フェーズで行われます。
各Beanはデフォルトで積極的にインスタンス化されます(依存関係が挿入された正しい順序で作成されます)。
依存関係の注入後、各Beanは後処理フェーズを通過し、追加の構成と初期化が行われる可能性があります。
後処理後、Beanは完全に初期化され、使用できる状態になります(コンテキストが破棄されるまで、IDによって追跡されます)
わかりました、これは私にはかなり明確であり、次の2種類のBeanポストプロセッサがあることも知っています。
初期化子:指示された場合はBeanを初期化します(つまり、@ PostConstruct)。
そしてすべての残り:追加の設定を可能にし、それが初期化工程の前または後に実行可能
そして私はこのスライドを投稿します:
したがって、イニシャライザ Beanポストプロセッサが何を行うかは非常に明確です(これらは@PostContructアノテーションが付けられたメソッドであり、セッターメソッドの直後に(つまり、依存関係の注入後に)自動的に呼び出されます)。いくつかの初期化バッチを実行します(前の例のようにキャッシュに入力します)。
しかし、他のBeanポストプロセッサを正確に表すものは何でしょうか。これらのステップが初期化フェーズの前または後に実行されるとはどういう意味ですか?
そのため、私のBeanがインスタンス化され、その依存関係が注入されるため、初期化フェーズは(@PostContructアノテーション付きメソッドの実行によって)完了します。初期化フェーズの前にBean Post Processorが使用されているとはどういう意味ですか?@PostContructアノテーション付きメソッドの実行前に発生するということですか?これは、依存関係の注入前(セッターメソッドが呼び出される前)に発生する可能性があることを意味しますか?
そして、それが初期化ステップの後に実行されると言うとき、私たちは正確にどういう意味ですか。@PostContructアノテーション付きメソッドの実行後に発生することを意味しますか?
@PostContructアノテーション付きメソッドが必要な理由を頭の中で簡単に理解できますが、他の種類のBeanポストプロセッサの典型的な例を理解できません。