Spring自定义注解

一、@interface

Java用  @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。

二、@Override,@Deprecated,@SuppressWarnings

注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后,
JAVAC编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无任何标记,看你有什么标记,就去干相应的事。

注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法
的名字出错时,编译器就会报错,如图:


       注解@Deprecated,用来表示某个类的属性或方法已经过时,不想别人再用时,在属性和方法
上用@Deprecated修饰,如图:

注解@SuppressWarnings用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候,
 如图:

三、@Retention

注解@Retention可以用来修饰注解,是注解的注解,称为元注解。
Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,
这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS  RUNTIME   SOURCE
用@Retention(RetentionPolicy.CLASS)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,但不会被虚拟机读取在运行的时候;
用@Retention(RetentionPolicy.SOURCE )修饰的注解,表示注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中;
用@Retention(RetentionPolicy.RUNTIME )修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时,
所以他们可以用反射的方式读取。RetentionPolicy.RUNTIME 可以让你从JVM中读取Annotation注解的信息,以便在分析程序的时候使用.

四、@Target

注解@Target也是用来修饰注解的元注解,它有一个属性ElementType也是枚举类型, 
值为:ANNOTATION_TYPE CONSTRUCTOR FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE 
如@Target(ElementType.METHOD) 修饰的注解表示该注解只能用来修饰在方法上

五、Documented 注解

Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中.

六、Inherited 注解

这是一个稍微复杂的注解类型. 它指明被注解的类会自动继承. 更具体地说,如果定义注解时使用了 @Inherited 标记,然后用定义的注解来标注另一个父类, 父类又有一个子类(subclass),则父类的所有属性将被继承到它的子类中.

时间: 2024-10-13 01:50:41

Spring自定义注解的相关文章

Spring自定义注解实现Controller获取想要的数据

最近看组内一个哥们写了一个HandlerAdapter,能自动获取Http请求里面的Cookie并组装成一个Model来直接使用.觉得很牛逼.因此自己做了一个,特来分享. 原理: 利用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter. 在DispatcherServlet里面定义了: private List<HandlerAdapter> handlerAdapters; 用于

创建spring自定义注解进行自动装配

1.创建自定义注解 1 import org.springframework.beans.factory.annotation.Qualifier; 2 import java.lang.annotation.ElementType; 3 import java.lang.annotation.Retention; 4 import java.lang.annotation.RetentionPolicy; 5 import java.lang.annotation.Target; 6 7 8

Spring自定义注解扫描的实现

目标:实现自定义spring自动扫描注解.主要为后期实现分布式服务框架自动注解提供技术支持 技术分析:通过配置组件扫描标签使spring解析标签. 1. JewelScanBeanDefaultParser.java public class JewelScanBeanDefaultParser implements BeanDefinitionParser { private static final String RESOURCE_PATTERN = "/**/*.class";

spring - 自定义注解

本自定义注解的作用:用于控制类方法的调用,只有拥有某个角色时才能调用. java内置注解 1.@Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: ElemenetType.CONSTRUCTOR   构造器声明 ElemenetType.FIELD   域声明(包括 enum 实例) ElemenetType.LOCAL_VARIABLE   局部变量声明 ElemenetType.METHOD   方法声明 ElemenetType.PACKAGE   包声明

深入Spring 自定义注解加载和使用

前言 在工作中经常使用Spring的相关框架,免不了去看一下Spring的实现方法,了解一下Spring内部的处理逻辑.特别是开发Web应用时,我们会频繁的定义@Controller,@Service等JavaBean组件,通过注解,Spring自动扫描加载了这些组件,并提供相关的服务.Spring是如何读取注解信息,并注入到bean容器中的,本文就是通过嵌入Spring的Bean加载,来描述Spring的实现方法.完整的例子都在Github上了. 自定义注解 先看一个最简单的例子,在使用Spr

【转】spring 自定义注解(annotation)与 aop获取注解

首先我们先介绍Java自定义注解. 在开发过程中,我们实现接口的时候,会出现@Override,有时还会提示写@SuppressWarnings.其实这个就是Java特有的特性,注解. 注解就是某种注解类型的一种实例,我们可以把它用在某个类上进行标注.下面这张图解释注解都是什么? 上图可以看出注解大体分为三种:元注解,标记注解,一般注解: 这一块其他的我就不多做介绍,我们这里主要说一下如何定义自己的注解,在这之前我们必须了解标准元注解和相关定义注解的语法.元注解的作用就是负责注解其他注解.Jav

SpringMVC拦截器+Spring自定义注解实现权限验证

设计思路 主要针对需要登录后操作的接口进行校验.接入层在对外暴露接口后,网页.APP.第三方等等途径进行访问接口.用户请求首先会被SpringMVC拦截器拦截到,在拦截器里第一步就是需要校验用户的登录身份(由于是分布式系统这里采用的是userId+accessToken方式来校验),登录校验通过之后再进行用户权限校验,此时会自动拦截@AuthValidate注解的method(核心),如果权限校验失败则抛出权限不足异常,否则校验通过之后再执行具体接口并返回结果. 1.自定义注解 1 packag

使用Spring自定义注解生产Http接口描述信息

最近在做一个手机后台项目,使用的是SpringMVC,开发的接口是HTTP接口.在接口写完后需要在网页中吧接口的名称测试地址等信息添加到网页中,感觉这样很麻烦还容易漏.于是就写了一个自定义注解通过注解的方式将接口的描述信息加入到接口中,通过注解描述接口信息并且生产接口测试地址 先看使用方法及最终效果 @ResponseBody @RequestMapping("/getBusWaiting") @AppInterface(value="获取候车信息",group=&

spring --自定义注解(配合@Aspect)

1:首先,声明自定义注解 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface DtTransactional { /* * Whether need to rollback */ public boolean includeLocalTransaction() default true; public boolean confirmMethodExist() default tru

aspectj 与 spring 自定义注解

** * ErrorCode: * * @author yangzhenlong * @since 2016/7/21 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface ErrorException { int code() default 0;//参数 } 复制代码 Aspect拦截注解类 复制代码 /** * ErrorEx