1 注解继承(扩展限定)

@Qualifier扩展限定

当注解A用在注解B上称之为:注解B继承了注解A。

又可以说成:注解B的扩展注解B限定描述符注解为注解A。

接下来看个有关@Qualifer扩展的例子:

@Target( {ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE} )
@Retention(RetentionPolicy.RUNTIME)
@Qualifier                          //注解A
public @interface MyQualifier{}     //注解B

//使用
public class Main3 (
    @Autowired
    public List<User> userList;

    @Autowired
    @Qualifier
    public List<User> qualifierList;

    @Autowired
    @MyQualifier
    public List<User> myQualifierList;

    @Bean
    @Qualifier
    public User get1() {
        return new User(1,"1"); 
    }

    @Bean
    @Qualifier
    public User get2() {
        return new User(2,"2"); 
    }

    @Bean
    @MyQualifier
    public User get3(){
        return new User(3,"3"); 
    }

    @Bean
    @MyQualifier
    public User get4(){
        return new User(4,"4"); 
    }

    @Bean
    public User get5(){
        return new User(5,"5"); 
    }
}

client测试:

public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
    context.register (Main3.class);
    context.refresh();

    Main3 bean = context.getBean(Main3.class);

    System.out.println(bean.userList);
    System.out.println(bean.qualifierList);
    System.out.println(bean.myQualifierList);

    context.close();
}

上例中@Qualifier用在@MyQualifier上,那么@MyQualifier就是@Qualifier的子注解。

因为@Qualifier注解可以用在注解上,当@Qualifier用在其他注解上,相当于其他注解也拥有了区分该注入哪个Bean的能力。

myQualifierList@MyQualifier修饰,那么其自动注入时只会注入被@MyQualifier修饰的Bean{User.id=3,User.id=4}的Bean。

qualifierList@Qualifier修饰,因为@Qualifier@MyQualifier的父注解 那么qualifierList自动注入时会注入被@MyQualifier@Qualifier修饰的Bean{User.id=3,User.id=4,User.id=1,User.id=2}的Bean。

2 java提供有关依赖注入的注解

依赖注入 javax.inject中@Inject、@Named、@Qualifier和@Provider用法

这个是 Java EE 6 规范 JSR 330 -- Dependency Injection for Java 中的东西,也就是 Java EE 的依赖注入

spring == == JSR-330
@Autowired的缺省情况 @Inject
@Component @Named无值时的缺省情况
扩展@Qualifier限定描述符注解情况 @Qualifier
Copyright © qgao 2021-* all right reserved,powered by Gitbook该文件修订时间: 2022-08-15 18:47:21

results matching ""

    No results matching ""