序文
前の記事では、Beanや使い捨てなどのインターフェイスを介して、Beanの初期化と破壊のためにいくつかのカスタム操作を行うことができると言及されています。注意すべきことの1つは、豆が容器によってインスタンス化された後の操作にすぎないということです。春の世界では、通常のビジネス開発者としてインスタンス化プロセスについて何かをしたい場合は、明らかにアプリケーションコンテキストやBeanFactoryを継承する必要はありません。Springコンテナはいくつかのインターフェイスを提供し、今日の主人公(Beanpostprocesters(Benpostprecess))を含むプラグインの形で豆の初期化操作を拡張できるようにします。
ソースコード、スニークピークを取ります
この使用法は非常に簡単です。 2つの方法しかありません。独自のBeanPostProcessorを実装し、Springはコンテナに自動的に登録できます。
Beanインスタンスの後、プロパティ設定後、初期化方法の前に、前の方法が実行される場合。さまざまな初期化方法の後にメソッドが実行された後。
これについて言えば、一部の人々は、ライフサイクルのこの初期化インターフェイスと他の初期化インターフェイスの違いは何ですか?他の初期化方法も豆を変更できます。この質問は良いです。このインターフェイスとInitializingBean使い捨てインターフェイスとカスタマイズされたinit Destroyメソッドの本質的な違いについて話しましょう。
ここには2つの特別なBPPがあります。 @autowireまたは @injectのインジェクション機能(Injectionmetadataを使用する場合がある)に類似した注釈をカスタマイズする必要がある場合、通常のBPPはニーズを満たしていない可能性があり、2つの特別なBPPを使用する場合があります。
mergedBeanDefinitionPostProcessor(以下MBDPPと呼ばれる)
InstantiationAwareBeanPostProcessor(以下、IABPPと呼ばれる)
それらはすべてBPPから継承していますが、スプリングビーンズの作成プロセスのエントリポイントは通常のBPPとは異なります。
InstantiationAwareBeanPostProcessorインターフェイス
コメントを参照してください
ポストプロセスの前に導入された方法
AbstractAutowireCapableBeanFactoryのCreateBean方法を確認します(この方法は、春の容器で豆を作成するコア方法です)。ポストプロセスの前に存在する前に、beanインスタンス化の前であることがわかります。ポストプロセッアフテリンタンティエーションは、インスタンス化後およびオートワイヤ注射の前に設定されています。通常、Spring Frameworkで内部で使用されていますが、ここには大きな可能性があります。 PostProcessBeforeInstantiationを使用してプロキシオブジェクトを生成します(一般的な方法は、PostProcessorbeBeerStantiationのリターンをNULLではなく、BEANインスタンスの作成プロセスを中断することです。この方法で返されるオブジェクトは、Beanインスタンスとして使用されます)。ソースコードを参照してください:
PostProcessPropertyValuesメソッド
PostProcessPropertyValuesを使用して、プロパティのさまざまな操作、注釈のメタデータの解析などを完了します。Springの@Autowire Injection、JSR330の@Inject、およびJSR250の@Resourceおよびその他の注入操作はすべてこの方法を通じて完了します。
このインターフェイスは春に使用され、興味のある学生はソースコードを読むことができます。以下は、2つの典型的な実装です。
AutowiredAnnotationBeanPostProcessor
AbstractAutoproxyCreator
MergedBeanDefinitionPostProcessorインターフェイス
このインターフェイスは、beanの定義を変更できるrootbeandefinitionで通過します。 @autuwiredannotationbeanpostprocessorは、この方法を使用して、注入する必要があるメンバーをチェックして登録します。
BeanFactoryPostProcessor(BFPP)
BeanPostProcessorに加えて、誰もが知っている別の種類のこと、つまりBeanFactoryPostProcessorがあります。
BFPPは、BeanFactoryの重要な拡張プラグインであり、BeanDefinitionでカスタマイズできます。 BPPとの主な違いは次のとおりです。
さて、多くのことを言った後、SpringのBean Creationの一般的なフローチャートを見てみましょう。ここでは、より重要なノードのみがマークされています。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。