1、什么是自动装配
(1)根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入
2、演示自动装配过程
(1)根据属性名称自动注入
代码:
Dept:
public class Dept {
@Override
public String toString() {
return "Dept{}";
}
}
Emp:
public class Emp {
//自动装配是 查找的属性名:dept
private Dept dept;
public void setDept(Dept dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Emp{" +
"dept=" + dept +
'}';
}
public void test(){
System.out.println(dept);
}
}
byName
<!--实现自动装配
bean标签属性 autowire , 配置自动装配
autowire两个值:
byName 根据属性名称注入,注入值bean的id和类属性名称一样
byType 根据属性类别注入 找Dept类型
-->
<bean id="emp" class="com.spring5.autowire.Emp" autowire="byName">
<!--普通注入属性方式-->
<!-- <property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="com.spring5.autowire.Dept">
</bean>
byType:多个类型时,无法确定需要的bean。所以相同类型的bean,不能定义多个
<!--实现自动装配
bean标签属性 autowire , 配置自动装配
autowire两个值:
byName 根据属性名称注入,注入值bean的id和类属性名称一样
byType 根据属性类别注入 找Dept类型
-->
<bean id="emp" class="com.spring5.autowire.Emp" autowire="byType">
<!--普通注入属性方式-->
<!-- <property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="com.spring5.autowire.Dept">
</bean>
junit测试:
@Test
public void test5(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean5.xml");
Emp emp = applicationContext.getBean("emp", Emp.class);
System.out.println(emp);
}
测试结果:
Emp{dept=Dept{}}