2

春のアプリケーションにいくつかの設定済みの Bean があります。すべての Bean は、機能するはずのとおりに機能し、仕事をしています。

問題は、私は を実装しましたがBeanPostProcessor、一部の Bean に対して呼び出されていないことに気付きました (どちらpostProcessAfterInitializationでもないpostProcessBeforeInitialization)。原因は何ですか?

4

1 に答える 1

1

関連性があるかどうかはわかりませんが、リファレンスマニュアルには次のように書かれています。

BeanPostProcessorsとAOP自動プロキシ

BeanPostProcessorインターフェースを実装するクラスは特別であるため、コンテナーによって異なる方法で処理されます。すべてのBeanPostProcessorsとその直接参照されるBeanは、ApplicationContextの特別な起動フェーズの一部として起動時にインスタンス化され、その後、すべてのBeanPostProcessorsがソートされた方法で登録され、それ以降のすべてのBeanに適用されます。AOP自動プロキシはBeanPostProcessor自体として実装されているため、BeanPostProcessorまたは直接参照されるBeanは自動プロキシの対象にはなりません(したがって、アスペクトが「織り込まれている」ことはありません。

このようなBeanの場合、情報ログメッセージが表示されます。「Bean'foo'は、すべてのBeanPostProcessorsによる処理の対象ではありません(例:自動プロキシの対象ではありません)」。

だから、多分あなたの豆はプロキシされています。

于 2012-05-28T02:22:27.283 に答える