)
1.什么是注解Java注解Annotation也叫元数据。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面用来对这些元素进行说明注释。注解只是用来标记而这个注解真正的功能都是由框架通过反射来实现的。2.注解的属性注解的属性也叫做成员变量。注解只有成员变量没有方法。注解的成员变量在注解的定义中以“无形参的方法”形式来声明其方法名定义了该成员变量的名字其返回值定义了该成员变量的类型。Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) public interface TestAnnotation { int id(); String msg(); }在使用的时候我们应该对成员变量进行赋值。赋值的方式是在注解的括号内以 value“” 形式多个属性之前用 隔开。TestAnnotation(id3,msghello annotation) public class Test { }注解中属性可以有默认值默认值需要用 default 关键值指定。3.元注解描述注解的注解是元注解这些注解只能用在修饰注解上不能使用在其他地方比如方法、类等等。3.1RetentionRetentionPolicy.SOURCE注解只保留在源文件当Java文件编译成class文件的时候注解被遗弃也就是编译时有效。RetentionPolicy.CLASS注解被保留到class文件但jvm加载class文件时候被遗弃这是默认的生命周期加载时被抛弃。RetentionPolicy.RUNTIME注解不仅被保存到class文件中jvm加载class文件之后仍然存在一直有效3.2TargetTarget(ElementType.TYPE) —— 接口、类、枚举、注解Target(ElementType.FIELD) —— 字段、枚举的常量Target(ElementType.METHOD) —— 方法Target(ElementType.PARAMETER) —— 方法参数Target(ElementType.CONSTRUCTOR) —— 构造函数Target(ElementType.LOCAL_VARIABLE) —— 局部变量Target(ElementType.ANNOTATION_TYPE) —— 注解Target(ElementType.PACKAGE) —— 包比如Target({ElementType.TYPE, ElementType.METHOD})就代表着RequestMapping可以用在 接口、类、枚举、注解上、还可以用在方法上。4.自定义注解public class Test { myAnnotation public void test(){ }; } Target({ElementType.METHOD,ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface myAnnotation{ //暂时没有参数 }