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 回答