我们常用set方法注入类中的成员变量,那么set方法真的是给成员变量赋值吗?
答案是否定,实际上set方法注入与成员变量没有一定的联系,真正有联系的是属性。
先了解一下属性和成员变量的区别:
成员变量就是类中定义的变量,
而属性sun官方给的定义是:
属性的官方定义:
属性是指get或者set方法名 去掉get或者set后,把剩余的部分首字母改为小写后,即为这个类的属性。
因为我们变量德set和get方法都是编译器生成的,所以一般来说成员变量和属性是一样的。但如果是下面的情形就不一样了。`
public class student{
public String getName(){
return " my name is dark_passion !";
}
}
这个类就没有成员变量,但是有属性name。
接着来看一下spring的set方法注入.
set方法注入则会触发set方法,set方法实际不是给成员复制,而是触发了set方法而已。
看一个例子:
public class Account implements Serializable {`
private int bbb;
public void setAaa(int aaav) {
System.out.println(aaav);
bbb = aaav;
System.out.println("aaaaaaa");
}
}
xml配置:
<bean id="account" class="com.chenzhichao.damain.Account">
<property name="ABb" value="100000"></property>
</bean>
测试:
@Test
public void test() {
System.out.println(account.getBbb());
}
测试结果:
第一行结果是set方法配置中的value=100000
,value的值赋值给了参数aaav
第二行是value值给了account的成员变量
bbb。
结论:
<bean id="account" class="com.chenzhichao.damain.Account">
<property name="aaa" value="100000"></property>
</bean>
set方法注入实际是触发类中的某个set方法,value值是set方法的参数,此参数可以与属性或者成员变量无关