SPRING系列四之 自動裝配

自動裝配是爲了減少指定屬性的需要,比如在XML定義了bean A,bean B包含了A,對B進行配置時,可以通過自動裝配減少對A的設定。
先寫個類:

    //HelloWord.java
    import java.util.Date;
    public class HelloWorld{
        private String msg = null;
        private Date date = null;
        public HelloWorld(String msg,Date date){
            this.msg = msg;
            this.date = date;
        }
        //set get方法省略
    }

byName模式

HelloWorld.java 包含一個date變量,通過byName模式會找一個叫做date的Bean定義,然後來設置date屬性。

    <bean id="helloWorld" class="com.jeysine.test.HelloWorld" autowrite="byName">
        <property name="msg" value="HelloWorld" />
    </bean>
    <bean id="date" class="java.util.Date" />

byType模式

byType模式會查找XML文件與之類型一致的bean進行裝配,如果多於一個,就會拋出一個異常。若查找不到,則什麼也不做,可以根據dependency-check=“object”指定該情況拋出異常。

    <bean id="helloWorld" class="com.jeysine.test.HelloWorld" autowrite="byType">
        <property name="msg" value="HelloWorld" />
    </bean>
    <bean id="date" class="java.util.Date" />

constuctor

costructor模式根據構造函數的參數來查找合適類型的bean進行裝配

    <bean id="helloWorld" class="com.jeysine.test.HelloWorld" autowrite="constructor">
        <property name="msg" value="HelloWorld" />
    </bean>
    <bean id="date" class="java.util.Date" />

aurodetect模式

自動選擇byType或者constructor模式,優先選擇constructor模式。

    <bean id="helloWorld" class="com.jeysine.test.HelloWorld" autowrite="autodetect">
        <property name="msg" value="HelloWorld" />
    </bean>
    <bean id="date" class="java.util.Date" />

no模式

不使用自動裝配,則要對包含的bean進行配置。

    <bean id="helloWorld" class="com.jeysine.test.HelloWorld" autowrite="autodetect">
        <property name="msg" value="HelloWorld" />
        <property name="date">
            <ref local="date"/>
        </property>
    </bean>
    <bean id="date" class="java.util.Date" />

對自動裝配的補充

由於自動裝配是隱式的,我們不知道是否屬性已經設定完成。故可以通過dependency-check屬性對其進行設定依賴檢查。若屬性都有默認的值,則不需要依賴檢查。
依賴檢查有四種模式:simple,object,all,none。

  1. simple只對基本類型,字符串,集合進行依賴檢查。
  2. object會對依賴的對象進行檢查;
  3. all是對全部屬性進行依賴檢查;
  4. none則不進行檢查。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章