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

@Qualifier:

用途:当bean中存在两个一样的User类时,@Qualifier+@Autowired可以用来消除歧义,指定一个User注入。
示例
存在的两个bean,user1和user2均属于User类。


<property name="name"value="zhangsan"/>bean>

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

你可能感兴趣的:(Spring,spring,boot,java,后端)