一、自定义注解

1.1什么是自定义注解?

Jdk1.5新增新技术,注解。很多框架为了简化代码,都会提供有些注解。可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。

注解分类:元注解(也称为内置注解,jdk自带的注解),自定义注解(Spring框架以及其他框架)

1.2、什么是元注解?

比如:

spring自定义注解的原理 spring自定义注解有哪些_自定义

spring自定义注解的原理 spring自定义注解有哪些_元注解_02

spring自定义注解的原理 spring自定义注解有哪些_元注解_03

1.3、自定义注解

元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的元注解(meta-annotation)类型,它们被用来提供对其它 注解(annotation)类型作说明。Java5.0定义的元注解:

1.3.1、@Target

@Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

ElementType的用法

取值

注解使用范围

METHOD

可用于方法上

TYPE

可用于类或者接口上

ANNOTATION_TYPE

可用于注解类型上(被@interface修饰的类型)

CONSTRUCTOR

可用于构造方法上

FIELD

可用于域上

LOCAL_VARIABLE

可用于局部变量上

PACKAGE

用于记录java文件的package信息

PARAMETER

可用于参数上

1.3.2、@Retention


表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)它有以下三个参数:

RetentionPolicy.SOURCE  : 注解只保留在源文件中

RetentionPolicy.CLASS  : 注解保留在class文件中,在加载到JVM虚拟机时丢弃

RetentionPolicy.RUNTIME  : 注解保留在程序运行期间,此时可以通过反射获得定义在某个类上的所有注解。

1.3.3、@Documented

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

1.3.4、@Inherited

 @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。 如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

自定义实例


spring自定义注解的原理 spring自定义注解有哪些_spring自定义注解的原理_04


补充下 default关键字

default方法是在java8中引入的关键字,也可称为Virtual extension methods——虚拟扩展方法。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。

1.4、实现ORM框架映射

ORM对象关系映射

创建自定义表映射注解

spring自定义注解的原理 spring自定义注解有哪些_元注解_05

创建表字段注解

spring自定义注解的原理 spring自定义注解有哪些_spring自定义注解的原理_06

创建实体类使用自定义表注解和自定义表字段注解

spring自定义注解的原理 spring自定义注解有哪些_spring自定义注解的原理_07

编写使用方法

spring自定义注解的原理 spring自定义注解有哪些_自定义_08

结果

spring自定义注解的原理 spring自定义注解有哪些_spring自定义注解的原理_09