0

コンポーネントの次の依存関係ツリーを使用して、単純なアプリを作成しました。

Service1 injects Service2(via constructor)
Service2 injects SomeContext(via setter)
SomContext injects Service1(via setter)
Advisor is for Service1

そのため、Spring が Service1 または Service2 を構築しようとすると、自動的にアドバイスを適用しようとしますが、Spring には isCurrentlyInCreation (BeanFactoryAdvisorRetrievalHelper.java 内) のチェックがあるため、アドバイスを適用しようとする Bean はまだ作成されており、アドバイスの適用をスキップします。 .

Bean の再帰が設計の悪い方法であることはわかっていますが、現在分離してリファクタリングするのは困難です。

SomeContext の factorybean の助けを借りてこの問題を修正し、必要に応じて applicationcontext(applicationcontextaware) を介して Service1 をロードしますが、誰かがより良い解決策を知っているでしょうか?

4

1 に答える 1

1

ロード時のウィービングの代わりにコンパイル時のウィービングを適用すると、これを回避できます。開始するための 2 つの投稿を次に示します。

于 2013-01-03T07:10:15.443 に答える