2013-12-08 89 views
0

從書「春天行動」,我看到這個XML配置文件:春天,依賴注入查詢

<bean id="knight" class="com.springinaction.knights.BraveKnight"> 
<constructor-arg ref="quest" /> 
Inject quest bean 
</bean> 

到底是什麼<constructor-arg ref="quest" />?這是否意味着每次我將構建函數中的任務作爲參考調用時,都會獲取BraveKnight?

在此先感謝。

回答

4

您擁有的XML片段稱爲bean定義。你正在聲明一個Spring可以爲你生成的bean。

使用<constructor-arg>告訴Spring使用com.springinaction.knights.BraveKnight構造函數接受任何類型由ID quest引用的bean是一個參數,並在構造函數中調用該注入豆。這叫做constructor based dependency injectionIt is covered here.

鑑於兩類

class Foo {} 

class Bar { 
    private Foo foo; 
    public Bar (Foo foo) { 
     this.foo = foo; 
    } 
} 

和下面的bean定義

<bean id="foo" class="Foo" /> 

<bean id="bar" class="Bar"> 
    <constructor-arg ref="foo"> 
</bean> 

一個Foo bean將ID爲foo創建。調用Bar構造函數創建ID爲bar的bean時,將使用該bean。請記住,這一切都是通過反思完成的。

+0

+1,我會給它一個簡單的代碼示例。它會使未知更清晰。 –