美文网首页
自定义 Annotation 与使用

自定义 Annotation 与使用

作者: lz做过前端 | 来源:发表于2022-03-02 12:22 被阅读0次

    基本原理与架构

    顶层核心 Annotation 架构与 JVM 层面的处理

    • interface Annotation
    • @Target ,元注解
      • ElementType[] value()
      • 表示适用的范围,它决定了对应标签的可标注位置,可以是多个
    • @Retention,元注解
      • RetentionPolicy value();
      • 表示运行的范围,它决定了对应标签的生效时机,只能是一种
    • @Inherited,元注解
      • 被标注的对象被继承时,同样具有该注解相等效果
    • @Native,元注解
      • 1.8新增,注解一个成员变量,指示这个变量可以被本地代码引用。常常被代码生成工具使用
    • @Repeatable,元注解
      • 1.8新增,表示该定义的注解可以被重复添加至需要的位置

    其他 Java 自带的 Annotation

    • @Documented,元注解
      • 是否可以生成 Java 文档,javadoc等工具可以提取这些注解信息
    • @Deprecated
    • @Override
    • @SuppressWarnings
    • @SafeVarargs
    • @FunctionalInterface

    使用

    反射判断与获取 Annotation

    • java.lang.reflect.AnnotatedElement,反射如何判断与获取 Annotation
      • isAnnotationPresent(Class<? extends Annotation> annotationClass) 方法,表示判断当前位置是否有该注解,一般先做判断再获取
      • getAnnotation 方法,表示获取具体位置配置的 Annotation的对象,从而可以拿到 Annotation上具体配置的信息
    • 各种反射类实现 AnnotatedElement 接口
      • Field extends AccessibleObject implements AnnotatedElement
      • Class<T> implements AnnotatedElement (重写了)
      • Method
      • ... todo

    使用方式与一些最佳实践

    • 编译期
      • Lombok,生成字节码的过程中通过 Annotation 增强
    • 运行期
      • 全量扫描,Spring
      • AOP,Spring
      • API调用,自定义 Annotation

    参考

    相关文章

      网友评论

          本文标题:自定义 Annotation 与使用

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