zoukankan      html  css  js  c++  java
  • Spring 自定义注解(导出的时候需要增加导出日志而写的)

    `
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD})
    @Documented
    public @interface ExpLog {
    /**
    * 日志描述信息
    */
    String description() default "";
    }

    `
    @Retention注解是指生命周期
    按生命周期来划分可分为3类:
    1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
    2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
    3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
    这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。

    @Target注解
    @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
    主要有:
    /**用于描述类、接口(包括注解类型) 或enum声明 Class, interface (including annotation type), or enum declaration */
    TYPE,

    /** 用于描述域 Field declaration (includes enum constants) */
    FIELD,
    
    /**用于描述方法 Method declaration */
    METHOD,
    
    /**用于描述参数 Formal parameter declaration */
    PARAMETER,
    
    /**用于描述构造器 Constructor declaration */
    CONSTRUCTOR,
    
    /**用于描述局部变量 Local variable declaration */
    LOCAL_VARIABLE,
    
    /** Annotation type declaration */
    ANNOTATION_TYPE,
    
    /**用于描述包 Package declaration */
    PACKAGE,
    
    /**
     * 用来标注类型参数 Type parameter declaration
     * @since 1.8
     */
    TYPE_PARAMETER,
    
    /**
     *能标注任何类型名称 Use of a type
     * @since 1.8
     */
    TYPE_USE
  • 相关阅读:
    Swift3.0P1 语法指南——闭包
    OS X EI Capitan安装refind时出现Could not set boot device property: 0xe00002bc
    Swift3.0P1 语法指南——函数
    Swift3.0P1 语法指南——控制流
    [转]ios push
    给新浪微博审核提供下载地址
    xcode gdb/lldb调试命令
    博弈的真谛到底是什么?
    图基本算法 拓扑排序(基于dfs)
    HDU 1325 Is It A Tree? 判断是否为一棵树
  • 原文地址:https://www.cnblogs.com/jiazhihao/p/15131341.html
Copyright © 2011-2022 走看看