上篇文章没写清楚,这篇文章一篇就可以明白什么是byName和byType,先看代码
package com.test;
public class test4 {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "test4{" +
"name='" + name + '\'' +
'}';
}
}
package com.test;
public class test5 {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "test5{" +
"name='" + name + '\'' +
'}';
}
}
package com.test;
public class test6 {
test4 a ;
test5 b ;
public test4 getA() {
return a;
}
public void setA(test4 a) {
this.a = a;
}
public test5 getB() {
return b;
}
public void setB(test5 b) {
this.b = b;
}
@Override
public String toString() {
return "test6{" +
"a=" + a +
", b=" + b +
'}';
}
}
我这里分别定义了三个类,然后去spring的配置文件中去注入他们,
<bean id="a" class="com.test.test4">
<property name="name" value="盖伦"></property>
</bean>
<bean id="b" class="com.test.test5">
<property name="name" value="提莫"></property>
</bean>
<bean id="test6" class="com.test.test6" autowire="byName">
有的小伙伴已经明白了,这里主要是看我的bean标签id名称的变化,我现在的id标签是a和b,用的是byName,那么spring就会根据test6的属性名称 ,去上面的bean中寻找与之相同的id,a 对应a ,b对应b
我们再去修改一下配置文件,让他byType,
<bean id="test4" class="com.test.test4">
<property name="name" value="盖伦"></property>
</bean>
<bean id="test5" class="com.test.test5">
<property name="name" value="提莫"></property>
</bean>
<bean id="test6" class="com.test.test6" autowire="byType">
test6{a=test4{name='盖伦'}, b=test5{name='提莫'}}
这就变成byType了,其实就是根据test6的属性类型去匹配id,匹配到就注入,没有匹配到就为null;