1. 程式人生 > >Spring在xml檔案裡面配置Bean的自動裝配

Spring在xml檔案裡面配置Bean的自動裝配

Spring的xml檔案中在<bean>裡面定義autowire屬性可以完成自動裝配Bean
    <bean id="admin" class="com.yuan.Admin" autowire="byName" />
關於自動裝配有五種:
<1>,直接使用ref屬性
    <bean id="admin" class="com.yuan.Admin">
        <property name="user" ref="user" />
    </bean>
    <bean id="user" class="com.yuan.User" />
<2>,autowire="byName"根據屬性名稱自動裝配。如果一個bean的名稱和其他bean屬性的名稱是一樣的,將會自裝配它。
    <bean id="admin" class="com.yuan.Admin" autowire="byName" />    
    <bean id="user" class="com.yuan.User" />
由於對“user” bean的名稱是與“admin” bean的屬性(“user”)名稱,所以,Spring會自動通過setter方法將其自動裝配。“setUser(User user)“
<3>,autowire="byType"根據資料型別自動裝配。如果一個bean的資料型別是用其它bean屬性的資料型別,相容並自動裝配它。
    <bean id="admin" class="com.yuan.Admin" autowire="byType" />    
    <bean id="user" class="com.yuan.User" />
由於“user” bean中的資料型別是與“admin” bean的屬性(User物件)的資料型別一樣的,所以,Spring會自動通過setter方法將其自動裝配。“setUser(User user)“
<4>,autowire="constructor"通過建構函式引數的資料型別按屬性自動裝配Bean。
    <bean id="admin" class="com.yuan.Admin" autowire="constructor" />
    <bean id="user" class="com.yuan.User" />
由於“user” bean的資料型別與“admin” bean的屬性(User物件)的建構函式引數的資料型別是一樣的,所以,Spring通過構造方法自動裝配 – “public Admin(User user)“
<5>,autowire="autodetect"  如果找到預設的建構函式,使用“自動裝配用構造”; 否則,使用“按型別自動裝配”。
    'autowire’和 ‘dependency-check’ 相結合,以確保屬性始終自動裝配成功。
    <bean id="admin" class="com.yuan.Admin" autowire="autodetect" dependency-check="objects />
    <bean id="user" class="com.yuan.User" />