set注入和構造注入有時在做配置時比較麻煩。所以框架為了提高開發效率,提供自動組裝功能,簡化配置。 Spring框架式預設不支援自動組裝的,若要使用自動組裝需要修改spring設定檔中
自動組裝屬性有6個值可選,分別代表不同的意義。
1,byName
從Spring環境中取得目標物件時,目標物件中的屬性會根據名稱在整個Spring環境中尋找
整個Spring環境:表示所有的spring設定檔中查找,那麼id不能有重複的。
2,byType
從Spring環境中取得目標物件時,目標物件中的屬性會根據類型在整個spring環境中尋找
缺點:如果存在多個相同類型的bean對象,會出錯。
如果屬性為單一類型的數據,那麼查找到多個關聯物件會發生錯誤。
如果屬性為陣列或集合(泛型)類型,那麼查找到多個關聯物件不會發生異常。
3,constructor
使用建構方法完成物件注入,其實也是根據建構方法的參數型別進行物件查找,相當於採用byType的方式。
4,autodetect
自動選擇:如果物件沒有無參數的建構方法,那麼自動選擇constructor的自動組裝方式進行建構注入。如果物件含有無參數的建構方法,那麼自動選擇byType的自動組裝方式進行setter注入。
5,no
不支援自動組裝功能
6,default
表示預設採用上一層標籤的自動組裝的值。如果存在多個設定檔的話,那麼每一個設定檔的自動組裝方式都是獨立的。
如果設定檔存在多個的情況下,載入設定檔的方式:
1)可以指定總的設定檔去包含子的設定文件,然後只載入總的設定檔即可在總的設定檔applicationContext. xml中使用import標籤進行子檔案包
程式碼中載入設定檔:
ApplicationContextac= newClassPathXmlApplicationContext("applicationContext.xml");
//配置文件的名称 applicationContext.xml applicationContext-action.xml applicationContext-service.xml applicationContext-dao.xml ApplicationContextac =newClassPathXmlApplicationContext("applicationContext*.xml");程式碼中使用多個星號進行配對
星號載入,檔案名稱要符合規律。 (建議使用)
String[]files={"applicationContext.xml","applicationContext-test.xml"}; ApplicationContextac = newClassPathXmlApplicationContext(files);
3)可以使用陣列作為參數,一次載入多個設定檔rrreee
注意:自動裝配功能和手動裝配要是同時使用,那麼自動裝配功能和手動裝配功能和手動組裝功能不起作用。