1. 程式人生 > 其它 >Spring(7)Bean自動配置

Spring(7)Bean自動配置

7.Bean自動配置

7.1 Spring自動裝配

  我們把 Spring 在 Bean 與 Bean 之間建立依賴關係的行為稱為“裝配”。
  Spring 的 IOC 容器雖然功能強大,但它本身不過只是一個空殼而已,它自己並不能獨自完成裝配工作。需要我們主動將 Bean 放進去,並告訴它 Bean 和 Bean 之間的依賴關係,它才能按照我們的要求完成裝配工作。
  在前面的學習中,我們都是在 XML 配置中通過 <constructor-arg>和 <property> 中的 ref 屬性,手動維護 Bean 與 Bean 之間的依賴關係的。

  Spring 的自動裝配功能可以讓 Spring 容器依據某種規則(自動裝配的規則,有五種),為指定的 Bean 從應用的上下文(AppplicationContext 容器)中查詢它所依賴的 Bean,並自動建立 Bean 之間的依賴關係。而這一過程是在完全不使用任何 <constructor-arg>和 <property> 元素 ref 屬性的情況下進行的。
  Spring 的自動裝配功能能夠有效地簡化 Spring 應用的 XML 配置,因此在配置數量相當多時採用自動裝配降低工作量。

    

動裝配規則

Spring 共提供了 5 中自動裝配規則,它們分別與 autowire 屬性的 5 個取值對應,具體說明如下表。

屬性值 說明
byName 按名稱自動裝配。

Spring 會根據的 Java 類中物件屬性的名稱,在整個應用的上下文 ApplicationContext(IoC 容器)中查詢。若某個 Bean 的 id 或 name 屬性值與這個物件屬性的名稱相同,則獲取這個 Bean,並與當前的 Java 類 Bean 建立關聯關係。
byType 按型別自動裝配。

Spring 會根據 Java 類中的物件屬性的型別,在整個應用的上下文 ApplicationContext(IoC 容器)中查詢。若某個 Bean 的 class 屬性值與這個物件屬性的型別相匹配,則獲取這個 Bean,並與當前的 Java 類的 Bean 建立關聯關係。
constructor 與 byType 模式相似,不同之處在與它應用於構造器引數(依賴項),如果在容器中沒有找到與構造器引數型別一致的 Bean,那麼將丟擲異常。

其實就是根據構造器引數的資料型別,進行 byType 模式的自動裝配。
default 表示預設採用上一級元素 <beans> 設定的自動裝配規則(default-autowire)進行裝配。
no 預設值,表示不使用自動裝配,Bean 的依賴關係必須通過 <constructor-arg>和 <property> 元素的 ref 屬性來定義。