1. 程式人生 > >學習spring bean自動裝配

學習spring bean自動裝配

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

 屬性設定為 constructor。然後,它嘗試把它的建構函式的引數與配置檔案中 beans 名稱中的一個進行匹配和連線。如果找到匹配項,它會注入這些 bean,否則,它會丟擲異常。



<?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>