spring容器的自動裝配方式總結


前面我們學習了spring容器的兩種注入方式,設值注入和構造注入,並且對引用變量和基本變量(或者String變量)注入的方式都做了不同說明,現在我們繼續來學習一些簡便特殊的注入方式:

一、autowire(自動裝配)

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

1、 No:即不啟用自動裝配。Autowire默認的值。不使用Autowire,引用關系顯示聲明,spring的reference也建議不用autoware,因為這會破壞模塊關系的可讀性。

2、 byName:通過屬性的名字的方式查找JavaBean依賴的對象並為其注入。比如說類Computer有個屬性printer,指定其autowire屬性為byName后,Spring IoC容器會在配置文件中查找id/name屬性為printer的bean,然后使用Seter方法為其注入。

3、 byType:通過屬性的類型查找JavaBean依賴的對象並為其注入。比如類Computer有個屬性printer,類型為Printer,那么,指定其autowire屬性為byType后,Spring IoC容器會查找Class屬性為Printer的bean,使用Seter方法為其注入。如果存在多個該類型bean,那么拋出異常,並指出不能使用byType方式進行自動裝配;如果沒有找到相匹配的bean,則什么事都不發生,也可以通過設置dependency-check="objects"讓Spring拋出異常。

4、 constructor:通byType一樣,也是通過類型查找依賴對象。與byType的區別在於它不是使用Seter方法注入,而是使用構造子注入。如果容器中沒有找到與構造器參數類型一致的bean,那么拋出異常。

5、 autodetect:在byType和constructor之間自動的選擇注入方式。通過bean類的自省機制(introspection)來決定是使用constructor還是byType方式進行自動裝配。如果發現默認的構造器,那么將使用byType方式,否則采用
constructor。

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

注意:在配置bean時,<bean>標簽中Autowire屬性的優先級比其上級標簽高,即是說,如果在上級標簽中定義default-autowire屬性為byName,而在<bean>中定義為byType時,Spring IoC容器會優先使用<bean>標簽的配置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM