概述
Java注解基本知识
- 注解是代码的附属信息,不能干扰代码的正常执行,无论删除或增加注解,代码都能够正常执行
 - 定义注解使用@interface修饰符
 - Java预定义注解被称为元注解,它们被Java编译器使用,比如:@Retention注解和@Target注解,前者定义注解的保留期限,后者定义注解的应用目标
 - 注解的成员声明和接口的方法声明类似,还可以使用default关键字指定成员的默认值
 - 如果注解只有一个成员,则成员名必须取名为
value(),使用时如果给成员赋值可以不写成员名和赋值符号’=’ - 如果注解有多个成员,在赋值时如果只给
value()成员赋值,也可以不写成员名和赋值符号’=’ - 如果在赋值时要同时给多个成员赋值,则必须写成员名和赋值符号’=’
 - 所有注解类都隐式继承与
java.lang.annotation.Annotation,但是注解不允许显示继承于其他的接口 
有个问题,Java中所有类都隐式继承与Object类这个说法正确吗?
如何访问注解
通过Java的反射机制读取注解的信息
若要通过反射来读取注解信息,那么被定义的注解的保留期限必须是RententionPolicy.RUNTIME,
只有该策略下的注解信息会被保留在目标类代码的字节码中,并且当类加载器加载字节码时会将注解信息加载到JVM中
定义注解
1  | (RetentionPolicy.RUNTIME) // 定义@NeedTest注解的保留期限,该注解会保存到目标类的字节码中,并且会被类加载器加载到JVM中  | 
使用注解
1  | public class MyService {  | 
访问注解
1  | 
  | 
参考链接
《精通Spring4.x——企业应用开发实践》 第8章 基于@AspectJ和Schema的AOP 8.2 Java5.0注解知识快速进阶