博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习:springMVC注解
阅读量:5983 次
发布时间:2019-06-20

本文共 3219 字,大约阅读时间需要 10 分钟。

引言

在项目中,组长说我们的@Autowired注解都是黄的

clipboard.png
后来,组长说加上@SuppressWarnings来抑制警告信息
clipboard.png

  • @SuppressWarnings 注解目标

    其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。
第一次使用其注解,发现spring的强大,并了解了一下spring的各种注解

了解spring注解

spring注解分为两大类:

  1. spring的bean容器相关的注解,或者说bean工厂相关的注解;
  2. springmvc相关的注解。

spring的bean容器相关的注解:先后有:@Required@Autowired@PostConstruct@PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject@Named@Qualifier, @Provider, @Scope, @Singleton).

springmvc相关的注解有:@Controller, @RequestMapping, @RequestParam@ResponseBody等等。

springMVC注解

  • @Override

我们最熟悉的@Override, 定义

```/** * Indicates that a method declaration is intended to override a       * method declaration in a supertype. If a method is annotated with * this annotation type compilers are required to generate an error * message unless at least one of the following conditions hold: * The method does override or implement a method declared in a * supertype. * The method has a signature that is override-equivalent to that of * any public method declared in Object. *  * @author  Peter von der Ahé * @author  Joshua Bloch * @jls 9.6.1.4 @Override * @since 1.5 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}```

从注释,我们可以看出,@Override的作用是,提示编译器,使用了@Override注解的方法必须override父类或者java.lang.Object中的一个同名方法。

我们看到@Override的定义中使用到了 @Target, @Retention,它们就是所谓的元注解——就是定义注解的注解

  • @Retention

@Retention用于提示注解被保留多长时间,有三种取值:

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}

RetentionPolicy.SOURCE 保留在源码级别,编译时忽略(@Override就是此类);

RetentionPolicy.CLASS被编译器保留在编译后的类文件级别,但是在运行丢弃;
RetentionPolicy.RUNTIME保留至运行时。

  • @Target

 @Target:注解的作用目标

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}

举例

@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface TestOnly {}
只能使用在方法上,保留在源码级别,编译时忽略

总结

注解是用于建设基础jar包的一部分,项目都有自己的框架,若运用恰当,注解则为其中良好的一部分;spring从任何一个地方都能体现它的强大之处,但是我们呢??

转载地址:http://aorox.baihongyu.com/

你可能感兴趣的文章
Win安装Apache2+fastcgi+php5(non thread safe)+MySql
查看>>
eclipse集成maven
查看>>
HT图形组件设计之道(一)
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
简历对应技术整理
查看>>
PHP | 魔术方法 | __toString(),__clone(),__call(),__...
查看>>
Oracle(二) DDL语句 create、alert、drop、truncate
查看>>
TiDB 帮助万达网络科技集团实现高性能高质量的实时风控平台
查看>>
android--------Android内存分析工具的使用
查看>>
IE下propertychange事件引发的栈溢出问题解决
查看>>
MongoDB入门,在CentOS6.4 安装MongoDB
查看>>
Maven实战
查看>>
TEST
查看>>
gzcompress、gzencode、gzdeflate压缩比比较
查看>>
easyUI如何增加自定义的图标
查看>>
转自Ubuntu中国:apt软件包管理常用命令
查看>>
Fedora 17 调节笔记本屏幕亮度
查看>>
浅拷贝和深拷贝
查看>>
python 三色球问题
查看>>
利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)...
查看>>