《该注解可以使用在类上、属性上、参数上、方法上》
1. 当使用在类上的时候,如下代码,@Qualifier注解里面填写的值就是当前类注入到IOC容器的bean的唯一标识(id),再使用到该Bean的地方就可以直接根据唯一标识(id)从IOC容器中获取了;
//该类注入到IOC容器中Bean的id为userObject
@Component
@Qualifier("userObject")
public class Use{
private String name="lisa";
public User() {
}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2. 当使用在属性上的时候,如下代码,@Qualifier 和 @Autowired结合使用可以通过唯一Bean的id实现自动装配,因为单独的@Autowired注解实现自动装配是按照类型优先原则的,一旦IOC容器中出现了两个类型一样的Bean,@Autowired注解就会无法辨别用那个,即而报错,但是当我们加上 @Qualifier(value = "Bean的id") 的时候就可以直接通过Bean的唯一标识(id)进行装配了。
@Component
public class QualifierTest {
//@Qualifier 和 @Autowired结合使用可以通过唯一Bean的id实现自动装配
@Autowired
@Qualifier("userA")
private User user;
public void test(){
System.out.println(user.getName());
}
}
3. 当使用在参数上时,如下代码,一般是在@Configuration注解进行bean申明的时候方法参数列表中使用;
在参数上时通@Qualifier注解指定Bean的唯一标识,让参数的指定的Bean绑定起来;具有同样指定Bean唯一标识的@Resource在此无法在参数中使用。
@Configuration
public class QualifierConfig {
@Bean
public Student student(@Qualifier("userA") User user){
return new Userfact(user);
}
}
4. 在方法上时,@Qualifier起到了一个筛选的作用,只有加了@Qualifier注解的Bean才会被收集注入到本方法。
//@Qualifier在方法上时,遇见自动装配中有@Qualifier不会被过滤
@Qualifier
@Bean
public User user1() {
return new User("zhangsan",18) ;
}
@Bean
public User user2() {
return new User("lisi",17);
}
//只有user1会被自动注入到users,user2因为没有@Qualifier注解而导致被过滤掉了
@Resource
@Qualifier
private List<User> users = Collections.emptyList() ;
文章来源地址https://www.toymoban.com/news/detail-645145.html
文章来源:https://www.toymoban.com/news/detail-645145.html
到了这里,关于spring中@Qualifier注解的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!