2012-10-24 100 views
0

什麼是設置的的自動裝配屬性@Bean* Autowire.BY_NAME,這樣*@Bean(自動裝配= Autowire.BY_NAME,這樣)

望着JavDocs的目的,我真的不知道我什麼時候會利用這一點,或者爲什麼它會被設置爲* Autowire.BY_NAME,這樣*

/** 
* Are dependencies to be injected via autowiring? 
*/ 
Autowire autowire() default Autowire.NO; 

我有一個與

創建的現有bean原型3210

但我不明白爲什麼。 的評論僅供狀態:

注:我們已經明確設置Autowire.BY_NAME,這樣在bean定義 要能夠在其他Spring配置使用@Autowired 類

這是否意味着我們必須將bean設置爲@Bean(autowire = Autowire.BY_NAME),以便能夠使用具有@Autowired的Bean,並且它將通過@Bean中的名稱進行自動裝配。

回答

2

@Bean(autowire=Autowire.BY_NAME)是本xml配置的等效:

<bean class="Person" id="person" autowire="byName"></bean> 

指示豆是否使用上述Person類創建,就需要有自動連接在「按姓名」的字段 - 如果上述試驗bean有一個字段說address,Spring會查找一個名爲address的bean作爲依賴注入(而不是按類型Address)。

如果可能存在多於一個特定類型的實例,那麼通常會使用這種方法,那麼您將使用名稱選擇特定實例 - 再次考慮上面的示例,如果有兩個地址bean帶有名稱addressHome,addressWork並且如果Person類具有名稱爲addressHome的字段並且其設置爲Autowire.BY_NAME,則名稱爲addressHome的bean將被設置爲該字段。如果是Autowire.BY_TYPE它將失敗,因爲有兩個相同類型的地址實例Address

相關問題