当前位置:首页 > Java > 正文内容

Spring自定义注解详解

flowstone6年前 (2019-02-13)Java534

下面是RequestBody注解源码

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBody {	/**
	 * Whether body content is required.
	 * <p>Default is {@code true}, leading to an exception thrown in case
	 * there is no body content. Switch this to {@code false} if you prefer
	 * {@code null} to be passed when the body content is {@code null}.
	 * @since 3.2
	 */
	boolean required() default true;

}

现在讲一讲@RequestBody注解中用到其它注解

@Target注解

从字面上理解这个就是目标的意思,说明@RequestBody注解是作用于哪个上面

ElementType

public enum ElementType {    
/** 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
}


它的值有下列

说明(适用范围)
TYPE类,接口(包括注解类型),枚举
FIELD字段
METHOD方法
PARAMETER参数
CONSTRUCTOR构造方法
LOCAL_VARIABLE局部变量
ANNOTATION_TYPE注解类型
PACKAGE
TYPE_PARAMETER类型参数,从1.8开始
TYPE_USE类型的使用,从1.8开始

@Retention注解

从字面上理解这个就是保留的意思,说明@RequestBody注解是在哪些环境下保留此注解

RetentionPolicy

public enum RetentionPolicy {    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}


  • SOURCE 在编译时不保留此注解,此注解存在源代码中|

  • CLASS 在编译时保留注解于class文件中,VM运行时不需要保留,此值为默认值|

  • RUNTIME 在编译时保留注解于class文件中,VM运行时保留此注解,所以它们可以被反射阅读|

@Documented注解

此注解说明,如果生成javadoc文档时,会将该注解加入到文档中。


扫描二维码推送至手机访问。

版权声明:本文由薛尧的博客发布,如需转载请注明出处。

本文链接:https://flowstone.sourceforge.io/?id=34

分享给朋友:

相关文章

JavaWeb之JSP入门

JSP原理及执行过程1、流程图分析 用户发起请求,用户通过浏览器访问jsp页面,浏览器将HTTP协议的请求部分发送到服务端.服务端获取请求部分,分析请求,发现本次的请求的的是jsp页面,jsp引擎按照内部规定,将jsp页面转换为一...

Ehcache缓存简单使用

SPRING整合EHCACHE1.引入坐标pom.xml<!-- ehcache的缓存框架 --> <dependency>     <group...

import和import static说明

今天学习rest assured自动测试框架时,写了一些Demo,看到官网上快速指南上有静态导入某个包,起初没有注意以为是import的另一种叫法,在代码的部分导入了所需要的包,但是不能调用包中的方法。后来在百度上找到了解释,原来静态导入包...

IntelliJ IDEA技巧一之隐藏.idea目录

问题场景通过IntelliJ IDEA软件创建Java Web项目时,项目目录中总会生成.idea配置目录并在软件界面里显示,影响项目美感,如何在软件界面中隐藏.idea目录呢?解决方法打开IDEA软件的设置(Mac是Preferences...

Java编程思想学习总结一(一切都是对象)

存储位置寄存器堆栈 存储对象引用,堆栈指针向下移动,分配新的内存,向上移动,释放内存堆 存储Java对象常量存储 存储常量值非RAM存储 存储流对象和持久化对象基本类型所占存储空间基本类型大小包装器类型默认值boolean16bitBool...

Java内存缓存-通过Map定制简单缓存

缓存在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。为什么要用缓存场景在Java应用中,对于访问频率高,更新...