一、基础概念
注解可以看做标签,通过@interface关键字进行定义,我们在定义一个注解的时候会用到一些元注解,用来说明自定义注解@Retention标识注解的存活周期,保留到源码阶段、保留到编译进行阶段以及保留到程序运行,大多数常用为第三种;@Document标识注解中的元素可以包含到javadoc中;@Target比较重要标识注解应用场景范围比如应用到注解上、构造方法上、方法上、参数上、包上、类上、局部变量以及Type,Type表示类型包含了类、接口、枚举;@Inherited表示注解继承,就是在超类桑定义了注解子类继承此超类子类也继承这些注解,前提是子类没有其他注解;@Repeatable表示可重复,这个应用在注解中包含属性时可以给属性赋不同的值,但是定义注解时,属性需要给定默认值。java中自带了一些基础注解常用的比如@Deprecated标识已经过期不建议再使用、@Override 子类继承父类重写时、@SuppressWarnings这个标识消除告警提示可以解决掉@Deprecated带来的告警、@FunctionalInterface 函数式注解,函数式接口 (Functional Interface) 就是一个具有一个方法的普通接口。注解的解析获取其实是通过反射,可以通过 Class 对象的 isAnnotationPresent() 方法判断它是否应用了某个注解,再通过getAnnotation() 或者getAnnotations() 、getDeclaredMethod()等方法获取具体的值。
参考连接:https://blog.csdn.net/shengzhu1/article/details/81271409 针对本文
https://blog.csdn.net/briblue/article/details/73928350 代理模式及动态代理