の原因を追跡あなたは春の自動プロキシのものをいじり開始すると記載されているように、あなたは多くの場合、この動作に遭遇: BeanPostProcessorインタフェースを実装はSpringの「自動プロキシの対象ではない」
クラス が特殊なので、容器によって別様に処理されます。 すべての BeanPostProcessorsおよびその直接 参照豆は のApplicationContextの特別 起動フェーズの一部として、それらすべての BeanPostProcessorsがソートされた形で を登録され、起動時に をインスタンス化される - と にすべての更なる豆を適用。 AOP 自動プロキシが BeanPostProcessor自体として実装されているので、全く BeanPostProcessors直接 参照豆は 自動プロキシの対象としない(したがって 態様それらに「織」を持っていない。
任意ようについてBeanは、あなたが 情報ログメッセージが表示されます。「豆 『fooは』(例:自動プロキシの対象とならない )すべて BeanPostProcessorsによって処理されたばかりの対象とならない です」。
つまり、自分自身のBeanPostProcessorを作成し、そのクラスがコンテキスト内の他のBeanを直接参照している場合、それらの参照されるBeanは自動プロキシの対象にはならず、その旨のメッセージが記録されます。
私の問題は、「ダイレクトリファレンス」が実際にアプリケーションコンテキストで半分のBeanを取り込む過渡的な依存関係のチェーンになる可能性があるため、その直接参照がどこにあるかを追跡することが非常に難しいことです。すべてのSpringは、単一の情報メッセージであり、Beanがこの参照Webで捕捉されたことを知らせるだけではありません。
私が開発しているBeanPostProcessorは他のBeanへの直接参照を持っていますが、非常に限られた参照セットです。それにもかかわらず、ログメッセージによれば、コンテキスト内のすべてのBeanは自動プロキシから除外されていますが、その依存関係がどこで発生しているのかわかりません。
誰かがこれを追跡するより良い方法を見つけましたか?ただ、この質問には、いくつかの閉鎖をもたらすために
また、 'PersistenceExceptionTranslator'クラスの情報メッセージを得ることができます。 – Raedwald