一、概述
自动装配是根据指定规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入。
二、分类
xml自动装配分为按照属性名称自动装配(byName)和按照属性类型自动装配(byType)。
2.1、byName
java
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Department implements Serializable {
/**
* 部门名称
*/
private String name;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee implements Serializable {
/**
* 员工名称
*/
private String name;
/**
* 性别
*/
private String gender;
/**
* 部门
*/
private Department department;
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="employee" class="org.star.entity.Employee" autowire="byName">
<property name="name" value="李白"></property>
<property name="gender" value="男"></property>
<property name="department" ref="department"></property>
</bean>
<bean id="department" class="org.star.entity.Department">
<property name="name" value="研发部"></property>
</bean>
</beans>
/**
* IOC操作bean管理(xml自动装配-byName)
*/
@Test
public void beanManagementTest12() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext12.xml");
Employee employee = context.getBean("employee", Employee.class);
System.out.println("byName employee = " + employee);
}
// 控制台打印结果
byName employee = Employee(name=李白, gender=男, department=Department(name=研发部))
2.2、byType
java
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Department implements Serializable {
/**
* 部门名称
*/
private String name;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee implements Serializable {
/**
* 员工名称
*/
private String name;
/**
* 性别
*/
private String gender;
/**
* 部门
*/
private Department department;
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="employee" class="org.star.entity.Employee" autowire="byType">
<property name="name" value="李白"></property>
<property name="gender" value="男"></property>
<property name="department" ref="department"></property>
</bean>
<bean id="department" class="org.star.entity.Department">
<property name="name" value="研发部"></property>
</bean>
</beans>
/**
* IOC操作bean管理(xml自动装配-byType)
*/
@Test
public void beanManagementTest13() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext13.xml");
Employee employee = context.getBean("employee", Employee.class);
System.out.println("byType employee = " + employee);
}
// 控制台打印结果
byType employee = Employee(name=李白, gender=男, department=Department(name=研发部))