1.定义
注解是Annonation接口的一个子接口,注解的作用是为当前读取该注解的程序提供判断依据。注解的具体实现类是Java运行时生成的动态代理类,通过反射获取注解时,返回的是Java运行时生成的动态代理对象。
2.常见注解及其意义
注解包括自定义的注解、JDK内置注解和第三方框架提供的注解
2.1 JDK内置注解
元注解
修饰注解的注解
- @Target:表明作用范围,包括类、接口、字段、方法、参数、构造函数、局部变量、注解等
- @Retention:生命周期,包括SOURCE(被编译器丢弃)、CLASS(在class文件可用,会被JVM丢去)、RUNTIME(JVM使用,作为运行时的判断依据)
- @Documented:被该注解修饰的注解会生成到javadoc中
- @Inherited:可以让注解被“继承”,让子类Class对象使用getAnnotations获取父类中被@Inherited修饰的对象
- @Repeatable:JDK1.8新加入的元注解,表示在同一位置上重复相同的注解
JDK内置注解
- @Override:表明此方法覆盖了父类的方法,生命周期为SOURCE
- @Deprecated:用于标明已经过时的方法和类,生命周期为RUNTIME
- @SuppressWarning:用于有选择的关闭编译器对类、方法和成员变量的警告,生命周期为SOURCE
2.2 第三方框架提供的注解
- Spring IOC相关:@Configuration/@Bean/@Autowired/@Qualifier/@Resource
- Spring MVC相关:@Controller/@Service/@Repository/@Component/@RequestBody/@ResponseBody/@ResController
- Spring AOP相关:@Before/@After/@AfterReturning/@AfterThrowing/@Around