@Retention 介绍

Retention.java 类位于 JDK 的 rt.jar 内,属于一个 JDK 注解

它是用来修饰注解的,是注解的注解,称之为元注解

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {RetentionPolicy value();
}

@Retention 作用

该注解是定义被它所注解的注解保留多久,内部有一个枚举类型的属性 RetentionPolicy

该枚举有 3 个可选值 SOURCECLASSRUNTIME

public enum RetentionPolicy {/*** 注解保留在源文件,当  Java 文件编译成 class 文件的时候,注解将被编译器废弃*/SOURCE,/*** 注解被保留到 class 文件,但在 jvm 加载 class 文件的是时候被废弃(默认属性)*/CLASS,/*** 注解将被记录在由编译器的类文件,并在运行时由虚拟机保留*/RUNTIME
}

@Retention 属性选择

  • 如果需要在运行时动态获取注解信息,只能用 RUNTIME
  • 如果要在编译时进行一些预处理操作,就用 CLASS
  • 如果仅仅做一些检查的操纵,则用 SOURCE

如下为使用不同属性的注解示例

@Import 注解使用 RUNTIME

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {Class<?>[] value();
}

@Immutable 注解使用 CLASS

@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface Immutable {}

@Override 注解使用 SOURCE

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {}

「SpringBoot 相关注解」@Retention 元注解相关推荐

  1. java元注解_Java的元注解

    注解是一系列元数据,它利用元数据来解释.说明程序代码(即被注解的对象).注解的作用包括: 1.提供信息给编译器,编译器可以利用注解来探测错误和警告信息. 2.软件工具可以利用注解信息来生成代码.HTM ...

  2. 注解(7)_元注解_元注解的概念_@Retention_@Target_@Documented_@Inherited

    元注解的概念 元注解是用于修饰其他注解的注解. (1)元注解本身也是注解. (2)元注解是用来修饰别的注解的. JDK5.0提供了四种元注解: @Retention @Target @Document ...

  3. @Retention元注解的使用

    @Retention注解标记其他的注解用于指明标记的注解保留策略: 先看Java SE 8中@Target是如何声明的: package java.lang.annotation;public enu ...

  4. Java注解篇(一)四大元注解@Target@Retention@Documented注解

    1.@Target目标注解,意思带注解的适用于哪些范围,有以下参数可供使用 @Target(ElementType.METHOD) 1.CONSTRUCTOR:用于描述构造器 2.FIELD:用于描述 ...

  5. JAVA注解 | 可重复元注解@Repeatable

    目录 使用 @Repeatable 使用反射获取注解 约束 @Repeatable 是 JDK1.8 增加的元注解,用于声明当前注解是可重复的.如果有没有声明 @Repeatable,在同一个地方使用 ...

  6. 关于Java的Retention元注解

    为什么80%的码农都做不了架构师?>>>    Demo 写了一个自定义注解: package com.my.test;import java.lang.annotation.Ele ...

  7. 「SpringBoot学习一」开发入门--快速创建springboot程序

    前言 本片博客记录快速创建springboot工程的两种方式.一种是使用maven创建,一种是使用spring initializr创建.开发环境JDK1.8.IDEA.maven. SpringBo ...

  8. 拦截器获取请求参数post_「SpringBoot WEB 系列」RestTemplate 之自定义请求头

    [WEB 系列]RestTemplate 之自定义请求头 上一篇介绍了 RestTemplate 的基本使用姿势,在文末提出了一些扩展的高级使用姿势,本篇将主要集中在如何携带自定义的请求头,如设置 U ...

  9. spring boot 高性能批量新增_「SpringBoot DB系列」Jooq之新增记录使用姿势

    [SpringBoot DB 系列]Jooq 之新增记录使用姿势 接下来我们开始进入 jooq 的增删改查的使用姿势系列,本篇将主要介绍如何利用 jooq 来实现添加数据 I. 项目搭建 本项目借助S ...

最新文章

  1. mongodb地理位置索引实现原理
  2. 深入讨论PHP5对象复制技术
  3. 使用FFmpeg进行视频抽取音频,之后进行语音识别转为文字
  4. Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
  5. Timus1286(欧几里德算法的应用)
  6. sql server 2008安装错误(无法处理异常)
  7. Visio 中如何画实现接口的连线
  8. 量体裁衣:将DevOps转型融入到企业文化
  9. sitck-breaking折棍法理解
  10. [Vue warn]: Error in render: “TypeError: Cannot read properties of undef
  11. jquery : 插件 jsgrid 范例
  12. 决定了,儿童节我们用python画这个...
  13. 序号47指标横向展示.xlsx_杭州增加2万个小客车指标!想拥有“浙A”车牌,这个APP一定要收好~...
  14. flutter 中Sliver一些想法
  15. latex和word文档互相转换
  16. ArrayList 和 Vector 的区别是什么?
  17. 在Unity2018如何使用代码一键设置Icon
  18. 由手机号绑定的账号,都应设置更换手机号功能
  19. 异构图注意力网络(Heterogeneous Graph Attention Network)
  20. 自动驾驶功能架构的演进

热门文章

  1. 北京市供销合作总社与华融新兴达成全面战略合作 ——SinoBBD 携手华融 大数据产业基金推动行业升级...
  2. 寻找图像中的局部极大点
  3. 在word中插入公式并给公式编号
  4. python学完后做什么_python学完之后主要是做什么?
  5. Cesium for UE4 加载离线本地服务器
  6. 怎样追女孩子?当然是用python把她的照片做成拼图游戏,给她看啦..
  7. IBM Watson:武士刀的悲歌
  8. 根据用户ID查询上级和上上级组织机构
  9. python中的- >符号
  10. Set遍历解决java.util.NoSuchElementException报错问题