• 【spring】自定义注解 custom annotation


    自定义注解 custom annotation

    使用场景

    • 类属性自动赋值。
    • 验证对象属性完整性。
    • 代替配置文件功能,像spring基于注解的配置。
    • 可以生成文档,像java代码注释中的@see,@param等

    一、切面方式

    1. 参数校验 implements ConstraintValidator
    2. HandlerInterceptorAdapter 切面类实现HandlerInterceptorAdapter,且纳入容器,需要registry切面类
    3. aop

    二、参数说明
      1、@Target

    1.      作用:说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
    2.      取值(ElementType)有:
    • CONSTRUCTOR:用于描述构造器
    • FIELD:用于描述域
    • LOCAL_VARIABLE:用于描述局部变量
    • METHOD:用于描述方法
    • PACKAGE:用于描述包
    • PARAMETER:用于描述参数
    • TYPE:用于描述类、接口(包括注解类型) 或enum声明

    2、@Documented

    1.       作用:@Documented 在生成javac时显示该注解的信息

    3、@Retention

    1.      作用:定义被它所注解的注解保留多久,一共有三种策略,定义在RetentionPolicy枚举中。
    2.      取值:
    •    SOURCE:被编译器忽略。在编译阶段丢弃,这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。@Override, @SuppressWarnings都属于这类注解。所以他们被称作源码级别注解。有过代码自动生成经验的开发者,譬如lombok,都知道它是通过注解在编译时自动生成一部分代码,让源码看起来更简洁,字节码却很强大。 
    •     CLASS:注解将会被保留在Class文件中,但在运行时并不会被VM保留。这是默认行为,所有没有用Retention注解的注解,都会采用这种策略。
    •    RUNTIME:保留至运行时。所以我们可以通过反射去获取注解信息。

    4、@Inherited

    1.     作用:允许子类继承父类的注解。该注解定义的annotation如果作用在A类上,如果B继承A,则B类同时也继承了A的annotation

          github:https://github.com/Baker-abc/baker-learning-springboot/tree/master/learn-custom-annotation

  • 相关阅读:
    Storm概念学习系列之storm出现的背景
    Storm概念学习系列之什么是实时流计算?
    Storm概念学习系列之storm-starter项目(完整版)(博主推荐)
    JAVA 毕业设计 辅导
    可视化的Redis数据库管理工具redis-desktop-manager的初步使用(图文详解)
    CentOS 7的安装详解
    GT-----如何做Android应用流量测试?
    性能测试开始前必知知识点
    【UI】自动化用例设计技巧
    国外免费接收短信验证码平台网站
  • 原文地址:https://www.cnblogs.com/kbian/p/12028532.html
Copyright © 2020-2023  润新知