美文网首页
JDK提供的@Repeatable注解的作用

JDK提供的@Repeatable注解的作用

作者: Wannay | 来源:发表于2021-12-04 19:54 被阅读0次

我们都知道,在一个方法/类/字段上,对于同一个注解,只能添加一个,如果添加重复的注解,那么就会出现如下这样的错误。

image.png

那么我们如何实现在一个类上标注多个相同注解?其实有一种方式,比如我们的ComponentScan注解和@ComponentScans注解。在@ComponentScans中定义一个value,类型为ComponentScan[],这样就可以在@ComponentScan注解上配置一个数组,从而间接实现一个类上标注多个注解。如下

public @interface ComponentScans {
    public ComponentScan[] value();
}

但是这其实并不是真正的标注了相同的注解,在使用时还是标注了别的注解,而不是直接标注了多个@CompoentScan。但是其实JDK为我们考虑了这种需要,为我们提供了java.lang.annotation.Repeatable这个注解,就是为了帮我们实现这个需求的。

这个注解需要将原来配置的@ComponentScan注解上加上@Repeatable注解,指定如果出现了多个注解,将会被合成到哪个注解内。

@Repeatable(ComponentScans.class)  // 使用@Repeatable注解,如果重复使用@ComponentScan注解,将会被合成成为一个一个@ComponentScans注解
public @interface ComponentScan {
    public String[] value() default {};
}
image.png

配置了该配置之后,我们发现不再报错了!完全可以使用重复的注解了,但是在编译时,编译器会帮我们把多个@CompoentScan注解,合成给一个@ComponentScans注解。

需要注意的是,合成这个词,我们下来来进行验证一下。

验证代码如下

@ComponentScan
@ComponentScan
public class App {

    public static void main(String[] args) throws Exception {
        Annotation[] annotations = App.class.getAnnotations();
        System.out.println(annotations.length);
        System.out.println(Arrays.toString(annotations));
    }
}

最终得到的结果如下,验证我们的结论,在运行时所有的@ComponentScan注解都被合并到@ComponentScans注解当中去。

1
[@com.wanna.ComponentScans(value={@com.wanna.ComponentScan(value={}), @com.wanna.ComponentScan(value={})})]

个人博客:http://wanna1314y.top:8090/

相关文章

  • JDK提供的@Repeatable注解的作用

    我们都知道,在一个方法/类/字段上,对于同一个注解,只能添加一个,如果添加重复的注解,那么就会出现如下这样的错误。...

  • 使用Google开源库AutoService进行组件化开发

    在JDK 1.5之后,java提供了对注解的支持,这些注解与普通代码一样,在运行期间发挥作用。在JDK 1.6中实...

  • AutoService源码解析

    在JDK 1.5之后,java提供了对注解的支持,这些注解与普通代码一样,在运行期间发挥作用。在JDK 1.6中实...

  • 10 AutoService源码解析

    在JDK 1.5之后,java提供了对注解的支持,这些注解与普通代码一样,在运行期间发挥作用。在JDK 1.6中实...

  • java.lang.Annotation源码学习

    元注解 元注解就是标记其他注解的注解,包括:@Documented,@Inherited,@Repeatable,...

  • 自定义注解的使用

    一、注解的分类 1.1 JDK基本注解 JDK基本注解就三个,主要是用来提供一些信息说明的。 @Override,...

  • @Repeatable注解的用法

    1. Repeatable注解的定义 java8以后支持在同一个地方(某个方法或者某个类等)加上相同的注解,前提是...

  • JAVA基础之注解

    1、注解的作用 Annotation(注解)是JDK 5.0引入的特性,它的基本作用就是修饰编程元素。 注解相当于...

  • Java注解

    类型: @interface 作用 为修饰者提供元数据 注解本质 元注解:提供给注解使用的注解 . @Retent...

  • 注解-3:元注解

    jdk 提供的4种元注解元注解:对现有的注解进行解释说明的注解 Retention:指定所修饰的 Annotati...

网友评论

      本文标题:JDK提供的@Repeatable注解的作用

      本文链接:https://www.haomeiwen.com/subject/qrrbxrtx.html