spring中@Qualifier注解的使用

《该注解可以使用在类上、属性上、参数上、方法上》

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() ;

  • 17
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值