首页 > 其他分享 >元注解

元注解

时间:2023-03-24 18:22:24浏览次数:37  
标签:用于 注解 ElementType TYPE annotation 描述

前言:

什么是注解: 

  注解其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用注解,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。

使用注解时要在其前面增加@符号,并把该注解当成一个修饰符使用。用于修饰它支持的程序元素

什么是元注解:

  元注解就是解释注解的注解

 

1、@Target

用于描述注解的作用范围,即注解在哪用

  属性值如下:java.lang.annotation.ElementType

    1.1、TYPE:用于描述类、接口(包括注解类型) 或enum声明

    1.2、FIELD:用于描述域即类成员变量

    1.3、METHOD:用于描述方法

    1.4、PARAMETER:用于描述参数

    1.5、CONSTRUCTOR:用于描述构造器(构造方法上)

    1.6、LOCAL_VARIABLE:用于描述局部变量

    1.7、PACKAGE:用于描述包

    1.8、ANNOTATION_TYPE:用在描述注释上

    1.9、TYPE_PARAMETER:1.8版本开始,自定义类型参数上

    1.10、TYPE_USE:1.8版本开始,对类型注解

案例:

@Target({ElementType.METHOD,ElementType.TYPE})
public @interface AddLog {
String value();
}

AddLog注解表示:用在类、接口、enum和方法上

 

2、@Retention

用于描述注解的生命周期

  属性值如下:java.lang.annotation.RetentionPolicy

    1.1、SOURCE:在源文件中有效(即源文件保留,检查时)

    1.2、CLASS:在class文件中有效(即class保留,编译时)

    1.3、RUNTIME:在运行时有效(即运行时保留,运行时)

案例:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddLog {
    String value();
}

RetentionPolicy.RUNTIME:这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理。

 

3、@Documented

用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。它是一个标记注解,没有成员。(指定该注解是否会在 javadoc 体现)

案例:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AddLog {
    String value();
}

 

4、@Inherited

用于表示某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。(子类会继承父类注解)

 

标签:用于,注解,ElementType,TYPE,annotation,描述
From: https://www.cnblogs.com/Life-QX/p/17252892.html

相关文章

  • @Valid 和 @Validated 注解用法
    没有使用注解验证要求:员工的名称不能为空,且长度不能超过10个字符,那么我们以前的做法大致如下:写完,我们启动项目测试下:(1)名称为空情况(2)正常情况(3)超过长度情况可以看......
  • SpringMVC-lesson04-hellospringmvc-注解开发-2023-03-22
    真实开发-注解开发1、<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XM......
  • Spring全家桶中各个注解的用法
    1.@ResponseBody@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XM......
  • 自动注解@WebServlet详细说明
    /**@WebServlet自动注解:相当于在web.xml文件中配置了servlet*/@WebServlet("/servletDemo1")publicclassServletDemo1extendsHttpServlet{@Override......
  • Spring MVC拦截器+注解方式实现防止表单重复提交
    原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过。注,如果是集群的方式,则需要将tok......
  • @Service注解为什么不能使用在接口上
    @Service注解为什么不能使用在接口上,而是写在实现类上这个问题从开始学习就有关注,但是一写@Service注解就会想到,不知道为啥要写在实现类上,好记性不如烂笔头,记录一下。接......
  • mybatis数据层的三种实现方式(xml、@Select注解、代码实现)
    mybatis数据层的三种实现方式(xml、@Select注解、代码实现)引言    在平常的日常java开发过程中,功能之间的交互,不可避免的要与数据库打交道,这中间就涉及到数据层......
  • mybatis-spring注解MapperScan的原理
    很多开发者应该都知道,我们只使用@MapperScan这个注解就可以把我们写的Mybatis的Mapper接口加载到Spring的容器中,不需要对每个Mapper接口加@Mapper这个注解了,加快了我们开发......
  • Spring 3.2.1.RELEASE MVC 基于注解ehcache.xml 配置方式
    载的关联包里的ehcache-spring-annotations.jar之外,还需要spring-context-support.jar,cblib-2.2.jar.<dependency><groupId>com.googlecod......
  • 【SpringBoot】自定义注解+拦截
     创建一个注解,用来校验身份@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceAuthUser{//intuser();......