查看原文
其他

JDK8新特性之重复注解

2017-10-07 javastack Java技术栈


什么是重复注解

下面是JDK8中的重复注解( java.lang.annotation.Repeatable)定义的源码。

  1. @Documented

  2. @Retention(RetentionPolicy.RUNTIME)

  3. @Target(ElementType.ANNOTATION_TYPE)

  4. public @interface Repeatable {

  5.    Class<? extends Annotation> value();

  6. }

重复注解,即一个注解可以在一个类、方法或者字段上同时使用多次,如Spring中可以使用多个扫描组件来扫描多个包的注解。

  1. @ComponentScan

  2. @ComponentScan

  3. public class Configuration{

  4. }

ComponentScan

  1. @Retention(RetentionPolicy.RUNTIME)

  2. @Target(ElementType.TYPE)

  3. @Documented

  4. @Repeatable(ComponentScans.class)

  5. public @interface ComponentScan {

ComponentScans

  1. @Retention(RetentionPolicy.RUNTIME)

  2. @Target(ElementType.TYPE)

  3. @Documented

  4. @Repeatable(ComponentScans.class)

  5. public @interface ComponentScan {

  6. ...

重复注解实现

下面来演示下重复注解的实现。

  1. public static void main(String[] args) {

  2.    for (Token token : UserToken.class.getAnnotationsByType(Token.class)) {

  3.        System.out.println(token.value());

  4.    }

  5. }

  6. @Target(ElementType.TYPE)

  7. @Retention(RetentionPolicy.RUNTIME)

  8. public @interface Tokens {

  9.    Token[] value();

  10. }

  11. @Target(ElementType.TYPE)

  12. @Retention(RetentionPolicy.RUNTIME)

  13. @Repeatable(Tokens.class)

  14. public @interface Token {

  15.    String value();

  16. }

  17. @Token("666666")

  18. @Token("888888")

  19. public interface UserToken {

  20. }

输出结果:

  1. 666666

  2. 888888


推荐阅读



什么是Spring Boot?

Spring Boot开启的2种方式

Spring Boot Starters启动器

Spring Boot定制启动图案

Spring Boot核心配置

Spring Boot功能实战

Spring Boot自动配置原理、实战

Spring Boot Runner启动器

Spring Boot - Profile不同环境配置


看完有没有收获?

分享到朋友圈给更多的人吧。




  Java技术栈  
微信公众号:「Javastack

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。


 ▼长按二维码关注我们↓↓↓



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存