自动装配 ‘byName’
关键字autowire=”byName”
public class Test1{
private Test2 test2;
private String name;
//省略get/set方法
public void check(){
test2.check();
}
}
public class Test2(){
public Test2(){
System.out.println("test2的构造函数");
}
public void check(){
System.out.println("test2的check()方法");
}
}
bean可以通过关键字byName去自动寻找test1类中需要的方法test2,找到bean.xml中的testTwo,就自动装配给test1中的test2的set方法。
autowire=”byName”的作用相当于<property name="test2" ref="test2" />
前提:
名字必须保持一致,因为它尝试将它的属性与配置文件中定义为相同名称的 beans 进行匹配和连接
<bean id="test1" class="com.xxx.xxx.Test1" autowire="byName">
<property name="name" value="test" />
</bean>
<bean id="test2" class="com.xxx.xxx.Test2"/>
自动装配 ‘byType’
关键字autowire=”byType”
与byName不同的是,即使名字不一致也可以匹配到,因为它将尝试匹配和连接它的属性
<bean id="test1" class="com.xxx.xxx.Test1" autowire="byName">
<property name="name" value="test" />
</bean>
<bean id="testTwo" class="com.xxx.xxx.Test2"/>
自动装配构造函数
关键字autowire=”constructor”
public class Test1{
private Test2 test2;
private String name;
public Test1( Test2 test2, String name ) {
this.test2= test2;
this.name = name;
}
public Test2 getTest2 () {
return spellChecker;
}
public String getName() {
return name;
}
public void check() {
test2.check();
}
}
public class Test2 {
public Test2 (){
System.out.println("test2的构造函数" );
}
public void check()
{
System.out.println("test2的check()方法" );
}
}
bean中使用了autowire=”constructor”,那么当前的bean就会通过构造函数自动装配
可以使用 <constructor-arg>
标签连接其余属性
<bean id="test1" class="com.xxx.xxx.Test1" autowire="constructor">
<constructor-arg value="test"/>
</bean>
<bean id="test2" class="com.xxx.xxx.Test2"/>