學習spring bean自動裝配
阿新 • • 發佈:2018-12-20
Spring 容器可以在不使用<constructor-arg>
和<property>
元素的情況下自動裝配相互協作的 bean 之間的關係,這有助於減少編寫一個大的基於 Spring 的應用程式的 XML 配置的數量。
自動裝配模式
下列自動裝配模式,它們可用於指示 Spring 容器為來使用自動裝配進行依賴注入。你可以使用<bean>
元素的 autowire 屬性為一個 bean 定義指定自動裝配模式。
自動裝配的侷限性
Spring 自動裝配 ‘byName’ 這種模式由屬性名稱指定自動裝配。Spring 容器看作 beans,在 XML 配置檔案中 beans 的 auto-wire 屬性設定為 byName。然後,它嘗試將它的屬性與配置檔案中定義為相同名稱的 beans 進行匹配和連線。如果找到匹配項,它將注入這些 beans,否則,它將丟擲異常。
Spring 自動裝配 ‘byType’
這種模式由屬性型別指定自動裝配。Spring 容器看作 beans,在 XML 配置檔案中 beans 的 autowire 屬性設定為 byType。然後,如果它的 type 恰好與配置檔案中 beans 名稱中的一個相匹配,它將嘗試匹配和連線它的屬性。如果找到匹配項,它將注入這些 beans,否則,它將丟擲異常。
Spring 由建構函式自動裝配
這種模式與 byType 非常相似,但它應用於構造器引數。Spring 容器看作 beans,在 XML 配置檔案中 beans 的 autowire
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- <bean id="demo" class="com.test1.Demo1" /> <bean id="demo2" class="com.test1.Demo2" autowire="byName" /> --> <!-- <bean class="com.test1.Demo1" /> <bean id="demo2" class="com.test1.Demo2" autowire="byType" /> --> <bean id="demo" class="com.test1.Demo1" /> <bean id="demo2" class="com.test1.Demo2" autowire="constructor" /> </beans>