自动连线的java异常
在autowiring byType中,如果属性类型与多个bean匹配,那么它将抛出异常,但是当我使用注释@Autowired并定义了两个具有相同属性类型的bean时,我看不到任何异常。 代码如下: 受雇者爪哇:
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();
}
}
豆子。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>
阿普曼。爪哇:
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);
}
}
如果我做错了什么,请纠正我
# 1 楼答案
您已经在Employee类中定义了一个名为“emp”的变量,该变量与id为“emp”的bean相同。因为今年春天,不要搞不清楚该注入哪个bean。如果您将bean id从“emp”更改为其他内容,您将得到一个不满意的bean依赖异常。阅读更多here
# 2 楼答案
Spring正在匹配
emp
变量名;如果你的bean是emp1
和emp2
,你会得到一个异常(除非你在@AutoWired
字段中添加一个@Qualifier
)