内容简介:在项目中,组长说我们的后来,组长说加上
引言
在项目中,组长说我们的 @Autowired 注解都是黄的
后来,组长说加上 @SuppressWarnings 来抑制警告信息
-
@SuppressWarnings 注解目标
其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。
第一次使用其注解,发现spring的强大,并了解了一下spring的各种注解
了解spring注解
spring注解分为两大类:
- spring的bean容器相关的注解,或者说bean工厂相关的注解;
- 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从任何一个地方都能体现它的强大之处,但是我们呢??
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP高级开发技术与应用
曹铁群、孙一江、张永学 / 清华大学出版社 / 2002-5-1 / 32.00
作为一本介绍PHP高级开发技术的书籍,本书并不像一般介绍PHP语言的书籍那样讲述大量的语法规则,罗列大量的函数,而是着眼于PHP在Web中的实际应用,特别是PHP对最新技术的支持,比如WAP技术、XML技术等。 本书涉及到的内容主要有:高级环境配置、高级语法和应用、正则表达式、面向对象技术、高级图像技术、用PHPLIB实现模板的处理、用PHPDoc实现文档的自动生成、PHP与组件技术、PH......一起来看看 《PHP高级开发技术与应用》 这本书的介绍吧!