@Qualifier、@Resource、 @Autowired注解简单理解

@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注解详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值