循環依存についてのドキュメントの内容は次のとおりです。
主にコンストラクターインジェクションを使用する場合、解決できない循環依存シナリオを作成する可能性があります。
例:クラスAにはコンストラクターインジェクションによるクラスBのインスタンスが必要であり、クラスBにはコンストラクターインジェクションによるクラスAのインスタンスが必要です。クラスAとBのBeanを相互に注入するように構成すると、Spring IoCコンテナーは実行時にこの循環参照を検出し、BeanCurrentlyInCreationExceptionをスローします。
考えられる解決策の1つは、コンストラクターではなくセッターによって構成されるいくつかのクラスのソースコードを編集することです。または、コンストラクターインジェクションを避け、セッターインジェクションのみを使用します。つまり、推奨されていませんが、セッターインジェクションを使用して循環依存関係を構成できます。
通常の場合(循環依存関係なし)とは異なり、BeanAとBeanBの間の循環依存関係により、完全に初期化される前に一方のBeanが他方に注入されます(従来の鶏/卵のシナリオ)。
この場合はセッターインジェクションを使用するか、そもそも循環依存を避けようとします。もう1つの解決策は、Beanの1つをBeanFactoryAwareにし、参照が必要なときにBeanファクトリから他のBeanを検索することです。