set方式注入属性的一个小细节

(1)正常情形

public class Student {
    private int age;
    public void setAge(int age) {
        this.age = age;
    }
}
    <bean id="student" class="com.Student">
        <property name="age" value="20"></property>
    </bean>

(2)在配置bean的时候,property标签的name属性到底写什么呢?
不清楚具体情况的人,可能会有这样的错误认识:property标签的name属性与bean的属性名是对应的。大部分情况下,二者的确是对应的。但这并不意味着二者存在对应关系。看下面代码:

public class Student {
    private int age;
    public void setAge1(int age) {//改变了set方法名
        this.age = age;
    }
}
    <bean id="student" class="com.Student">
        <property name="age" value="20"></property>
    </bean>

在这种情况下,属性注值失败,会抛出异常。因为:property标签的name属性与set方法对应。
(3)分析

    <bean id="student" class="com.Student">
        <property name="age" value="20"></property>
    </bean>

会调用setAge(arg)方法,并把value值传给方法的参数。
如果property标签的name属性是“age1”, 会调用setAge1(arg)方法。
如果property标签的name属性是“Abc”, 会调用setAbc(arg)方法。
如果property标签的name属性是“xxx”, 会调用setXxx(arg)方法。
(4)其实属性名是无关紧要的,set方法才是关键。Struts2中请求参数的注入也是set方式注入
(5)了解事物的真实情况还是很有必要的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值