限定标识符@Qualifier

1.用作指定Bean

@Qualifier 作用: 当 Bean 有多个实现时指定需要Bean名称

@Autowired
@Qualifier("user")// 指定 Bean 名称或 ID
private User namedUser;

2.用作分组

@Bean
@Qualifier // 进行逻辑分组
public User user1(){
    return createUser(7L);
}

@Bean
@Qualifier // 进行逻辑分组
public User user2(){
    return createUser(8L);
}

@Autowired
@Qualifier// 注入 Qualifier 修饰的 Bean
private Collection qualifiedUsers;// 注入@Qualifier标记的Bean    2 Beans = user1+user2 

@Autowired
private Collection allUsers;// 注入非 @Qualifier标记的Bean

3.自定义分组

// 自定义分组注解
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Qualifier
public @interface UserGroup {
}

// 创建分组Bean
@Bean
@UserGroup
public User user3(){
    return createUser(9L);
}

@Bean
@UserGroup
public User user4(){
    return createUser(10L);
}

// 分组注入
@Autowired
@UserGroup// 注入 Qualifier 修饰的 Bean
private Collection groupedUsers;// 2 Beans = user3+user4

// 收集所有被@Qualifier修饰的Bean 包含扩展的
@Autowired
@Qualifier// 注入 Qualifier 修饰的 Bean
private Collection qualifiedUsers;// 注入@Qualifier标记的Bean    2 Beans = user1+user2 

你可能感兴趣的:(spring-boot,java)