1

これが春に関連しているかどうかはわかりません:

私はこのような豆のクラスを持っています

class BeanClass {
    private ServiceA serviceA;
    private ServiceB serviceB;

    public BeanClass() {}

    public void setServiceA(ServiceA serviceA) {
        this.serviceA = serviceA;
    }

    public void setServiceB(ServiceB serviceB) {
        this.serviceB = serviceB;
    }

    public void callService() {
        serviceA.a();
        serviceB.b();
    }
}

およびその構成:

<bean id="beanClass" class="BeanClass">
    <property name="serviceA" ref="serviceA"/>
    <property name="serviceB" ref="serviceB"/>
</bean>

しかし、コントローラークラスで new キーワードを使用して Bean をインスタンス化します。

class ControllerClass {
    public void someMethod() {
        BeanClass beanClass = new BeanClass();
        beanClass.callService();
    }
}

私の問題は、ServiceA と ServiceB がどのようにインスタンス化されたかです。new を使用してクラスオブジェクトを取得し、そのフィールドメンバーを設定しないためです。

4

1 に答える 1

1

あなたはしたくない:

BeanClass beanClass = new BeanClass(); 

これは一言で言えば、Spring の IOC コンテナーの要点です。IOC コンテナーが BeanClass への参照を提供できるようにする必要があります。

@Autowired
BeanClass myBeanClass;

*これで完全ではありません。コントローラー用の追加の配線が少し必要になります。

于 2012-05-03T19:22:17.133 に答える