在自动装配byType中,如果属性类型与多个bean匹配,那么它会引发异常,但是当我使用注释@Autowired并定义了两个具有相同属性类型的bean时,我看不到任何异常。 以下是代码: Employee.java:
public class Employee {
private int id;
private String name;
private int salary;
// Getter and Setter
}
部:
public class Dept {
@Autowired
private Employee emp;
public Employee getEmp() {
return emp;
}
public void setEmp(Employee emp) {
this.emp = emp;
}
@Override
public String toString() {
return emp.getName();
}
}
beans.xml中:
<bean id = "dept" class = "Dept"></bean>
<bean id = "emp" class = "Employee">
<property name="id" value="25"></property>
<property name="name" value="Ram"></property>
<property name="salary" value="32000"></property>
</bean>
<bean id = "emp1" class = "Employee">
<property name="id" value="25"></property>
<property name="name" value="Sanju"></property>
<property name="salary" value="32000"></property>
</bean>
AppMain.java:
public class AppMain {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
Dept d = (Dept)context.getBean("dept");
System.out.println(d);
}
}
如果我做错了,请纠正我。
答案 0 :(得分:4)
Spring匹配emp
变量名称;如果您的bean是emp1
和emp2
,那么您将获得例外(除非您向@Qualifier
字段添加@AutoWired
)。
答案 1 :(得分:0)
你已经定义了一个名为“emp”的Employee类的变量,它与id为“emp”的bean相同。因为这个春天不要混淆了解它有哪个bean要注入。如果你将bean id从“emp”更改为其他东西,你将得到一个不满意的bean依赖异常。阅读更多here