@Qualifier限定哪个bean应该被自动注入。当Spring无法判断出哪个bean应该被注入时,@Qualifier注解有助于消除歧义bean的自动注入。参见下面的例子,
public class Staff{
@Autowired
private user user;
}
我们有两个bean定义为Person类的实例。
<beanid="staff"class="com.test.Staff"/>
<beanid="user1"class="com.test.User">
<property name="name"value="zhangsan"/></bean>
<beanid="user2"class="com.test.User">
<property name="name"value="lisi"/></bean>
Spring 知道哪个bean应该自动注入?不。当您运行上面的例子时,抛出如下异常:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.test.User] is defined: expected single matching bean but found2: [user1, user2]
要解决以上问题,你需要使用@Quanlifier注解告诉Spring 哪个bean应该被autowired的。
public class Staff
{
@Autowired
@Qualifier("user1")
private User user;
}