Springboot注解整理 二《自定义注解》

自定义注解

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface CommonLog {

    String value() default "";
}

@Target

@Target 说明了Annotation所修饰的对象范围
取值ElementType 的类型如下所示:
public enum ElementType {
    /** 用于描述Class, interface (包括 annotation type),或 enum 声明 */
    TYPE,
    /** 用于描述域Field(包含枚举常量(enum)) */
    FIELD,
    /** 用于描述方法Method */
    METHOD,
    /** 用于描述参数parameter */
    PARAMETER,
    /** 用于描述构造器Constructor */
    CONSTRUCTOR,
    /** 用于描述局部变量Local variable */
    LOCAL_VARIABLE,
    /** Annotation type declaration */
    ANNOTATION_TYPE,
    /** 用于描述包Package */
    PACKAGE,
    /**
     * Type parameter declaration
     * @since 1.8
     */
    TYPE_PARAMETER,
    /**
     * Use of a type
     * @since 1.8
     */
    TYPE_USE
}

@Retention

@Retention定义了注解(Annotation)被保留的时间长短,RetentionPoicy源码如下所示:

public enum RetentionPolicy {
    /**
     * 说明所修饰的注解(Annotation)在编译时将被丢弃(即源文件保留)
     */
    SOURCE,
    /**
     * 注解(Annotation)将由编译器记录在类文件中,但不需要在运行时由VM保留。这是默认行为(即class保留)
     */
    CLASS,
    /**
     * 注解(Annotation)将由编译器记录在类文件中,并在运行时由VM保留,因此可以反射地读取注解。
     *(即运行时保留)
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

@Inherited

1、@Inherited是元注解类型
2、指示自动继承注解(Annotation)类型。如果继承的元注解(meta-annotation)出现在注解(Annotation)类型声明上,并且用户在类声明上查询注解(Annotation)类型,并且类声明没有此类型的注解(Annotation),则将自动查询类的超类以查找注解(Annotation)类型。此过程将重复,直到找到此类型的注解(Annotation),或者到达类层次结构(对象)的顶部。如果没有超类具有此类型的注解(Annotation),则查询将指示相关类没有此类注解(Annotation)
3、请注意,如果元注解(meta-annotation)类型用于注释类以外的任何内容,则此元注释类型无效。还要注意,这个元注释只会导致注释从超类继承;实现接口上的注解(Annotation)没有效果。
@Documented
定义注解会被javadoc或者其他类似工具文档化默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理 

实例

public class SxxService{

    @CommonLog("value")
    public  void  service(String  name){
          // ...
    }

}

  

原文地址:https://www.cnblogs.com/outpointexception/p/10872691.html

时间: 2024-08-29 18:17:49

Springboot注解整理 二《自定义注解》的相关文章

SpringBoot入门十八,自定义注解的简单实现

项目基本配置参考文章SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可,此示例springboot升级为2.2.1版本. 1. pom.xml添加aop支持 <!-- 引入aop切面支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

深入JAVA注解(Annotation):自定义注解 (转)

原文出自:http://blog.csdn.net/yjclsx/article/details/52101922 一.基础知识:元注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email prote

Java注解教程和自定义注解

Java注解提供关于代码的信息,并且对它们注解的代码没有直接的影响.在这篇教程中,我们将学习Java注解,如何自定义注解,注解用法和如何使用反射解析注解. Java注解在Java1.5被引用并且在一些Java框架如Hibernate,Jersey,Spring中被广泛使用.注解是被嵌入到程序自身中的程序的元数据.它可以被注解解析工具或编译器解析.我们也可以指定注解的生命周期,或者仅在编译期间可用或者直到运行时. 在引入注解之前,我们可以通过程序注释或者Java文档来获取程序的元数据,但是注解提供

springboot通过AOP和自定义注解实现权限校验

自定义注解 PermissionCheck: package com.mgdd.sys.annotation; import java.lang.annotation.*; /** * @author LWW * @site www.lww.com * @company * @create 2019-12-16 14:08 */ // 标注这个类它可以标注的位置 @Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE}) // 标注这个注解

跟王老师学注解(二)注解的分类及内建注解

跟王老师学注解(二):注解的分类及内建注解 主讲教师:王少华   QQ群号:483773664 一.注解的分类 在Java中,根据注解的使用方法和用途,可将注解分成3类,分别是 内建注解(也称为基本注解),定义于java.lang包下 元注解(Meta Annotation) 自定义注解 二.内建注解 (一)分类 在JDK5.0及以上的版本的java.lang包下提供了3种标准的注解类型,分别是 @Override: @Deprecated @SuppressWarnings (二)@Overr

java 注解学习(一、注解入门,自定义注解)

注解是在我们的代码中添加信息提供了一种更加简便的方法,通过注解,我们可以在适当的时候非常方便的使用一些数据.具体的注解的概念就不展开了,具体通过一个例子来说明自定义注解的使用. 具体的场景是,我们开了一家超市,超市里面有个自动货柜机,货柜机上的产品都有产品编号.价格.产品描述和注意事项,超市管理人员需要在自动售卖机卖出东西时,实时的进行记录,通过注解再进行售卖的时候进行相关信息的记录,为了实现这个目标,我们首先申明一个注解,如下: @Target(ElementType.METHOD) @Ret

注解:@interface 自定义注解的语法

自定义注解: 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节.在定义注解时,不能继承其他的注解或接口.@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数.方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型.Class.String.enum).可以通过default来声明参数的默认值. 定义注解格式: public @interface 注解名

注解:java 自定义注解应用实例

本例子旨在使用自定义注解为实体打上标记,为自动生成 sql 提供依据,模拟 hibernate 的注解,至于注解的原理自己搜吧 1.定义 Table 注解 [java] view plain copy package test; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lan

Java注解教程及自定义注解

Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate.Jersey.Spring.注解作为程序的元数据嵌入到程序当中.注解可以被一些解析工具或者是编译工具进行解析.我们也可以声明注解在编译过程或执行时产生作用. 在使用注解之前,程序源数据只是通过java注释和javadoc,但是注解提供的功能要远远超