spring 原注解

参考实例

@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface SystemLog {
	boolean value() default true;
}

@Retention

@Retention注解可以用来修饰其他注解,是注解的注解,称为元注解。@Retention注解有一个属性value,是RetentionPolicy类型的。Enum RetentionPolicy是一个枚举类型。

按生命周期将RetentionPolicy划分为3类:

  • RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃
  • RetentionPolicy.CLASS:注解被保留到class文件,但JVM加载class文件时候被遗弃,这是默认的生命周期
  • RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,JVM加载class文件之后,仍然存在
    3个生命周期分别对应于:Java源文件(.java文件) —> .class文件 —> 内存中的字节码

@Documented

@Documented注解也可以用来修饰其他注解,是注解的注解,称为元注解。表明被修饰的内容应该被javadoc工具记录。默认情况下,javadoc是不包含注解的。但是如果声明注解时指定了@Documented,则它会被javadoc之类的工具处理,所以注解类型信息也会被包含在生成的文档中,是一个标记注解,没有成员。

@Target

@Target注解说明了Annotation所修饰的对象范围。Annotation可被用于packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造函数、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。总体而言,@Target用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

  • CONSTRUCTOR:用于描述构造器
  • FIELD:用于描述域
  • LOCAL_VARIABLE:用于描述局部变量
  • METHOD:用于描述方法
  • PACKAGE:用于描述包
  • PARAMETER:用于描述参数
  • TYPE:用于描述类、接口(包括注解类型) 或enum声明

@Inherited

@Inherited注解也可以用来修饰其他注解,是注解的注解,称为元注解。@Inherited元注解指定被它修饰的注解将具有继承性,如果某个类使用了@XXX注解(定义该注解时使用了@Inherited注解),其子类自动被@XXX修饰。

posted @ 2022-02-24 07:40  蓝天可乐  阅读(70)  评论(0编辑  收藏  举报