1. 程式人生 > >Spring 中的byName與 byType

Spring 中的byName與 byType

在應用中,我們常常使用<ref>標籤為JavaBean注入它依賴的物件。但是對於一個大型的系統,這個操作將會耗費我們大量的資源,我們不得不花費大量的時間和精力用於建立和維護系統中的<ref>標籤。實際上,這種方式也會在另一種形式上增加了應用程式的複雜性,那麼如何解決這個問題呢?Spring為我們提供了一個自動裝配的機制,儘管這種機制不是很完善,但是在應用中結合<ref>標籤還是可以大大的減少我們的勞動強度。前面提到過,在定義Bean時,<bean>標籤有一個autowire屬性,我們可以通過指定它來讓容器為受管JavaBean自動注入依賴物件。

<bean>的autowire屬性有如下六個取值,他們的說明如下: 

1、 No:即不啟用自動裝配。Autowire預設的值。 

2、 byName:通過屬性的名字的方式查詢JavaBean依賴的物件併為其注入。比如說類Computer有個屬性printer,指定其autowire屬性為byName後,Spring IoC容器會在配置檔案中查詢id/name屬性為printer的bean,然後使用Seter方法為其注入。 (如果容器中存在一個與指定屬性型別相同的bean,那麼將與該屬性自動裝配;如果存在多個該型別bean,那麼丟擲異常,並指出不能使用byType方式進行自動裝配;如果沒有找

到相匹配的bean,則什麼事都不發生,也可以通過設定)

3、 byType:通過屬性的型別查詢JavaBean依賴的物件併為其注入。比如類Computer有個屬性printer,型別為Printer,那麼,指定其autowire屬性為byType後,Spring IoC容器會查詢Class屬性為Printer的bean,使用Seter方法為其注入。 

4、 constructor:通byType一樣,也是通過型別查詢依賴物件。與byType的區別在於它不是使用Seter方法注入,而是使用構造子注入。 

5、 autodetect:在byType和constructor之間自動的選擇注入方式。 

6、 default:由上級標籤<beans>的default-autowire屬性確定。

http://blog.csdn.net/youlingqishi11/article/details/6458821