@Qualifier:
用途:当bean中存在两个一样的User类时,@Qualifier+@Autowired可以用来消除歧义,指定一个User注入。
示例:
存在的两个bean,user1和user2均属于User类。
<beanid="user1"class="com.test.User">
<property name="name"value="zhangsan"/></bean>
<beanid="user2"class="com.test.User">
<property name="name"value="lisi"/></bean>
/*当只是用@Autowired*/
public class Person{
@Autowired
private user user;
}
会抛出如下异常:
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]
意为是没有唯一的User类的bean,期望的是一个User类的bean,但是存在User1,User2两个bean。
使用@Qualifier+@Autowired解决该问题
/*使用@Qualifier+@Autowired解决该问题*/
public class Person{
@Qualifier("user1")
@Autowired
private user user;
}
参考:@Qualifier解析
@Resource
/*使用@@Resource解决该问题*/
public class Person{
@Resource(name="user1")
private user user;
}
@Resource如果不指定name值,会按照类型进行注入,如果指定了name属性,就会按照名称进行注入。
参考:@Resource注解详解