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则不进行检查。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章