Springの循環依存 質問する

Springの循環依存 質問する

Spring はこれをどのように解決するのでしょうか: Bean A は Bean B に依存し、Bean B は Bean A に依存します。

ベストアンサー1

スプリングリファレンスマニュアル循環依存関係がどのように解決されるかを説明します。Bean は最初にインスタンス化され、次に相互に注入されます。

次のクラスを考えてみましょう:

package mypackage;

public class A {

    public A() {
        System.out.println("Creating instance of A");
    }

    private B b;

    public void setB(B b) {
        System.out.println("Setting property b of A instance");
        this.b = b;
    }

}

同様のクラスB:

package mypackage;

public class B {

    public B() {
        System.out.println("Creating instance of B");
    }

    private A a;

    public void setA(A a) {
        System.out.println("Setting property a of B instance");
        this.a = a;
    }

}

次の構成ファイルがあったとします。

<bean id="a" class="mypackage.A">
    <property name="b" ref="b" />
</bean>

<bean id="b" class="mypackage.B">
    <property name="a" ref="a" />
</bean>

この構成を使用してコンテキストを作成すると、次の出力が表示されます。

Creating instance of A
Creating instance of B
Setting property a of B instance
Setting property b of A instance

aが に注入されるときbaはまだ完全に初期化されていないことに注意してください。

おすすめ記事