@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;
}

参考:

@Resource

/*使用@@Resource解决该问题*/
public class Person{
          
    
	@Resource(name="user1") 
    private user user;
}

@Resource如果不指定name值,会按照类型进行注入,如果指定了name属性,就会按照名称进行注入。 参考:

经验分享 程序员 微信小程序 职场和发展