Spring是受歡迎的企業級Java應用程式開發框架,數以百萬的來自世界各地的開發人員都在使用 Spring 框架創建高性能、易於測試和可重用的代碼。
自動裝配是Spring框架的重要功能,是使用Spring滿足bean依賴的一種方式,Spring會在應用中為某個bean尋找其依賴的bean,Spring中bean有三種裝配機制,分別是:在xml中顯示配置、在java中顯示配置以及隱式的bean發現機制和自動裝配。
Spring自動化裝配可以藉助@Autowired屬性實現,以下是自動裝配@Autowired屬性的六個值的簡要介紹:
1. byName
從Spring環境中獲取目標對象時,目標對象中的屬性會根據名稱在整個Spring環境中查找標籤的id屬性值。如果有相同的,那麼獲取這個對象,實現關聯。
整個Spring環境:表示所有的spring配置文件中查找,那麼id不能有重複的。
2. byType
從Spring環境中獲取目標對象時,目標對象中的屬性會根據類型在整個spring環境中查找標籤的class屬性值。如果有相同的,那麼獲取這個對象,實現關聯。
缺點:如果存在多個相同類型的bean對象,會出錯。
如果屬性為單一類型的數據,那麼查找到多個關聯對象會發生錯誤。
如果屬性為數組或集合(泛型)類型,那麼查找到多個關聯對象不會發生異常。
3. constructor
使用構造方法完成對象注入,其實也是根據構造方法的參數類型進行對象查找,相當於採用byType的方式。
4. autodetect
自動選擇:如果對象沒有無參數的構造方法,那麼自動選擇constructor的自動裝配方式進行構造注入。如果對象含有無參數的構造方法,那麼自動選擇byType的自動裝配方式進行setter注入。
5. no
不支持自動裝配功能。
6. default
表示默認採用上一級標籤的自動裝配的取值。如果存在多個配置文件的話,那麼每一個配置文件的自動裝配方式都是獨立的。
自動裝配是Spring框架的重要功能,能顯著減少裝配的數量,因此在配置數量相當多時採用自動裝配,可以減少工作量,且自動裝配可以使配置與Java代碼同步更新,因此,在開發過程中建議採用自動裝配,在系統穩定時可改為顯性裝配的方式。