Spring框架中属性值的自动绑定

在创建Bean时候,可以直接赋值。

public class HelloBean { 
    private String helloWord = "Hello!World!"; 
    private Date date; 
    
    public void setHelloWord(String helloWord) { 
        this.helloWord = helloWord; 
    } 
    public String getHelloWord() { 
        return helloWord + ":" + date.toString(); 
    } 
    public void setDate(Date date) { 
        this.date = date; 
    }    
    public Date getDate() { 
        return date; 
    } 
}

 再Spring 的application.xml中定义好bean

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="dateBean" class="java.util.Date"/> 
    
    <bean id="helloBean" class="onlyfun.caterpillar.HelloBean"> 
        <property name="helloWord"> 
            <value>Hello!Justin!</value> 
        </property> 
        <property name="date"> 
            <ref bean="dateBean"/> 
        </property> 
    </bean> 
</beans>

 直接指定值或是使用<ref>直接指定参数为其它的Bean。Spring支持"隐士自动绑定",可以通过,类型(byType)或名称(byName)来进行属性的自动绑定。

参数byType的含义:首先通过你创建好的Bean,中去找Date类型,如果存在,autowrie="byType"然后去找BeanFactory中是否存在这个类型。如果存在则,它会根据Bean中的Date类型自动的注入到该Bean中。
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="dateBean" class="java.util.Date"/> 
    
    <bean id="helloBean" class="com.baidu.HelloBean" autowire="byType"> 
        <property name="helloWord"> 
            <value>Hello!Justin!</value> 
        </property> 
        
    </bean> 
</beans>
也可以根据byTyName来进行属性绑定。
如果是byName而Date屬性要完成依賴注入的話,則必須修改一下第一個Bean的id值為date。在<bean>上加入dependency-check属性,用来检查自动注入的依赖关系是否完整。该属性有四个参数simple、objects、all、none 。第一个只检查简单的属性。第二个只检查对象的属性,第三个检查全部的属性。默认是none所有的都不去检查。如果有依赖关系不明确或者说不完整的,就会抛出UnsatisfiedDependencyExcpetion 异常。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值