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则不进行检查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值