zoukankan      html  css  js  c++  java
  • Spring--自定义注解

    作用

    使用自定义注解可以精简代码,去掉重复代码。

    介绍

    在Java中,注解分为两种,元注解和自定义注解

    一般我们把元注解理解为描述注解的注解,元数据理解为描述数据的数据,元类理解为描述类的类…。所以,在Java中,除了有限的几个固定的"描述注解的注解"以外,所有的注解都是自定义注解。在JDK中提供了4个标准的用来对注解类型进行注解的注解类(元注解),除了这四个,所有的其他注解全部都是自定义注解。他们分别是:

    @Target

    @Target 用于描述注解的使用范围。

    ElementType.TYPE:说明该注解只能被声明在一个类(类、接口(包括注解类型) 或enum声明)前。

    ElementType.FIELD:说明该注解只能被声明在一个类的字段前。

    ElementType.METHOD:说明该注解只能被声明在一个类的方法前。

    ElementType.PARAMETER:说明该注解只能被声明在一个方法参数前(JDK1.8)。

    ElementType.CONSTRUCTOR:说明该注解只能声明在一个类的构造方法前。

    ElementType.LOCAL_VARIABLE:说明该注解只能声明在一个局部变量前。

    ElementType.ANNOTATION_TYPE:说明该注解只能声明在一个注解类型前。

    ElementType.PACKAGE:说明该注解只能声明在一个包名前

    @Retention

    @Retention 定义了该注解类的生命周期

    RetentionPolicy.SOURCE: 注解只保留在源文件中

    RetentionPolicy.CLASS : 注解保留在class文件中,在加载到JVM虚拟机时丢弃

    RetentionPolicy.RUNTIME: 注解保留在程序运行期间,此时可以通过反射获得定义在某个类上的所有注解(注解永久保留,可以被JVM加载时加载到内存中)。

    提示:一般框架注解和我们自定义注解采用的几乎都是RUNTIME,因为只有这个才能运行时通过反射来获取注解中的数据。

    @Inherited

    @Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

    注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation

    解释: 比如A继承B,B类的上面有一个注解@A带有元注解@Inherited 那么A也可以拥有B父类的这个注解@A,但接口实现是不可以的。同时需要指出@A注解是需要元注解@Retention(RetentionPolicy.RUNTIME)。

    参考:java @Inherited注解的作用

    https://www.jianshu.com/p/7f54e7250be3

    @Documented

    描述其它类型的annotation应该被作为被标注的程序成员的公共API,   因此可以被例如javadoc此类的工具文档化。

     好文

    自定义注解!绝对是程序员装逼的利器!!

    浅谈Spring自定义注解从入门到精通 

  • 相关阅读:
    使用Ansible安装部署nginx+php+mysql之安装php(2)
    使用Ansible安装部署nginx+php+mysql之安装nginx(1)
    Ansible常见问题处理
    4.2、Ansible常用模块
    3.2、Ansible单命令测试
    2、Ansible配置文件详解
    4.1、Ansible模块
    3.3、Ansible命令参数详解
    3.1、Ansible命令简要说明及初步使用
    1、Ansible初识简要介绍及安装
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/14163812.html
Copyright © 2011-2022 走看看