Spring5 – 学习笔记 - 3.IoC容器
1、xml方式注入的自动装配
创建员工类。
/*
员工类
*/
public class Employee {
private Department department;
public void setDepartment(Department department){
this.department=department;
}
@Override
public String toString() {
return "Employee{" +
"department=" + department +
'}';
}
}
创建部门类。
/*
部门类
*/
public class Department {
@Override
public String toString() {
return "Department{}";
}
}
xml文件代码,这里autowire属性的值设置的是,byType,根据属性类型注入。
<!--xml的方式的自动注入
使用bean标签的autowire属性,autowire常用的俩个值:
byName,根据类成员的属性名称注入,类的属性名称需要和bean的id值相同
byType,根据类成员的属性类型注入,该类型的bean只能有一个,如果是多个就会找不到
-->
<bean id="employee1" class="com.tt.bean.Employee" autowire="byType">
</bean>
<bean id="department" class="com.tt.bean.Department"></bean>
测试代码。
@Test
public void test1(){
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
Employee employee =context.getBean("employee1", Employee.class);
System.out.println(employee);
}
测试结果。
xml文件代码2,这里将autowire的属性值设置为,byName,根据属性名称注入。
<!--xml的方式的自动注入
使用bean标签的autowire属性,autowire常用的俩个值:
byName,根据类成员的属性名称注入,类的属性名称需要和bean的id值相同
byType,根据类成员的属性类型注入,该类型的bean只能有一个,如果是多个就会找不到
-->
<bean id="employee1" class="com.tt.bean.Employee" autowire="byName">
</bean>
<bean id="department" class="com.tt.bean.Department"></bean>
测试结果,发现效果一样。
但是自动注入时,需要注意:
byName,根据类成员的属性名称注入,类的属性名称需要和bean的id值相同;
byType,根据类成员的属性类型注入,该类型的bean只能有一个,如果是多个就会找不到。