天天看點

spring架構學習(四)自動裝配

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"/> 

 代碼中加載配置檔案:    

[html]  view plain  copy  print ?

spring架構學習(四)自動裝配
spring架構學習(四)自動裝配
  1. <span style="font-size:18px;">ApplicationContextac= newClassPathXmlApplicationContext("applicationContext.xml");</span>  

 2)使用星号來比對多個檔案進行加載,檔案名稱要符合規律。 (推薦使用)

[html]  view plain  copy  print ?

spring架構學習(四)自動裝配
spring架構學習(四)自動裝配
  1. <span style="font-size:18px;">   //配置檔案的名稱  
  2. applicationContext.xml  
  3. applicationContext-action.xml  
  4. applicationContext-service.xml  
  5. applicationContext-dao.xml  
  6. ApplicationContextac =newClassPathXmlApplicationContext("applicationContext*.xml");  
  7.  </span>  

 3)可以使用數組作為參數,一次性加載多個配置檔案

[html]  view plain  copy  print ?

spring架構學習(四)自動裝配
spring架構學習(四)自動裝配
  1. String[]files={"applicationContext.xml","applicationContext-test.xml"};                 
  2. ApplicationContextac = newClassPathXmlApplicationContext(files);   

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