Spring Boot注解全攻略(五):@Qualifier

1,915 阅读1分钟

前言

当同一个类型的Bean创建了多个时,我们可以通过搭配@Autowired@Qualifier来确定需要注入的Bean解决混淆。除此以外,@Qualifier还可以标注在Bean上实现逻辑分组。

源码

@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Qualifier {
    String value() default "";
}

使用

标注在单个属性上,是根据name去获取Bean:

@Autowired
@Qualifier("bean2")
private MyBean mybean;

@Bean
public MyBean bean1() {
    return new MyBean();
}

@Bean
public MyBean bean2() {
    return new MyBean();
}

标注在集合上,则可以筛选出被@Qualifier标注的Bean

@Autowired
private List<User> users; // user1, user2, user3

@Autowired
@Qualifier
private List<User> usersQualifier; // user2, user3

@Bean
public User user1() {
    return new User();
}

@Bean 
@Qualifier
public User user2() {
    return new User();
}

@Bean
@Qualifier
public User user3() {
    return new User();
}