2012-05-03 43 views
1

不知道這是相關的彈簧或不:春季如何實例化這個類及其扶養

我有一個bean類這樣

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> 

但我使用控制器類中的新關鍵字實例化bean:

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

我的問題是ServiceA和ServiceB如何正確實例化?因爲我使用new來獲取類對象,並且從不設置其字段成員。

回答

1

你不想做的事:

BeanClass beanClass = new BeanClass(); 

這簡而言之是Spring IOC容器的整點。你應該讓IOC容器給大家一個參考,以您的BeanClass

@Autowired 
BeanClass myBeanClass; 

*這還沒有完全完成,你會需要一點額外的佈線,爲您的控制器。

+0

謝謝!我知道這不是一個好習慣。我只想確保Spring如何實例化其字段成員?例如ServiceA,ServiceB。 –

+0

它會爲您定義的2個屬性創建實例,然後給您打電話。 – rooftop

+0

謝謝!你的意思是Spring會使用bean定義來實例化BeanClass,當它看到新的BeanClass()時,即使我從一個普通的方法調用它並將它分配給一個局部變量。 –