[轉載]spring框架學習(四)自動裝配

  set注入和構造注入有時在做配置時比較麻煩。所以框架爲了提高開發效率,提供自動裝配功能,簡化配置。spring框架式默認不支持自動裝配的,要想使用自動裝配需要修改spring配置文件中<bean>標籤的autowire屬性

 自動裝配屬性有6個值可選,分別代表不同的含義。

 

1,byName

 從Spring環境中獲取目標對象時,目標對象中的屬性會根據名稱在整個Spring環境中查找<bean>標籤的id屬性值。如果有相同的,那麼獲取這個對象,實現關聯。

 整個Spring環境:表示所有的spring配置文件中查找,那麼id不能有重複的。

 

2,byType

 從Spring環境中獲取目標對象時,目標對象中的屬性會根據類型在整個spring環境中查找<bean>標籤的class屬性值。如果有相同的,那麼獲取這個對象,實現關聯。

 

 缺點:如果存在多個相同類型的bean對象,會出錯。

       如果屬性爲單一類型的數據,那麼查找到多個關聯對象會發生錯誤。

       如果屬性爲數組或集合(泛型)類型,那麼查找到多個關聯對象不會發生異常。

 

3,constructor

 使用構造方法完成對象注入,其實也是根據構造方法的參數類型進行對象查找,相當於採用byType的方式。

 

4,autodetect

 自動選擇:如果對象沒有無參數的構造方法,那麼自動選擇constructor的自動裝配方式進行構造注入。如果對象含有無參數的構造方法,那麼自動選擇byType的自動裝配方式進行setter注入。                      

5,no

 不支持自動裝配功能

 

6,default

 表示默認採用上一級標籤的自動裝配的取值。如果存在多個配置文件的話,那麼每一個配置文件的自動裝配方式都是獨立的。                   

 

 如果配置文件存在多個的情況下,加載配置文件的方式:

 1)可以指定總的配置文件去包含子的配置文件,然後只加載總的配置文件即可在總的配置文件applicationContext.xml中使用import標籤進行子文件包<importresource="applicationContext-test.xml"/> 

        

 代碼中加載配置文件:   

  1. <span style="font-size:18px;">ApplicationContextacnewClassPathXmlApplicationContext("applicationContext.xml");</span>  
ApplicationContextac= newClassPathXmlApplicationContext("applicationContext.xml");

 

 2)使用星號來匹配多個文件進行加載,文件名稱要符合規律。 (推薦使用)


  1. <span style="font-size:18px;">   //配置文件的名稱  
  2. applicationContext.xml  
  3. applicationContext-action.xml  
  4. applicationContext-service.xml  
  5. applicationContext-dao.xml  
  6.    
  7. ApplicationContextac =newClassPathXmlApplicationContext("applicationContext*.xml");  
  8.  </span>  
   //配置文件的名稱
applicationContext.xml
applicationContext-action.xml
applicationContext-service.xml
applicationContext-dao.xml
 
ApplicationContextac =newClassPathXmlApplicationContext("applicationContext*.xml");
 


 3)可以使用數組作爲參數,一次性加載多個配置文件

  1.    
  2. String[]files={"applicationContext.xml","applicationContext-test.xml"};                 
  3. ApplicationContextac = newClassPathXmlApplicationContext(files);   
  4.        
 
String[]files={"applicationContext.xml","applicationContext-test.xml"};               
ApplicationContextac = newClassPathXmlApplicationContext(files); 
     


 

 注意:自動裝配功能和手動裝配要是同時使用,那麼自動裝配就不起作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章