@Target
这个注解适用于决定注解的适用范围,例如适用于构造器,方法,字段等
@Retention
这个注解的作用是确定注解的生命周期一般用得比较多的是RunTime这样就可以在运行环境中使用它,赋值的方式一般是使用value进行赋值
-
SOURCE 代表着注解仅保留在源级别中,编译器将Java文件编译成class文件时将之遗弃。
-
CLASS 代表着注解被保留在class文件中,JVM加载class文件时将之遗弃。
-
RUNTIME 代表着标记的注解会由JVM保留,因此运行时环境可以使用它。
@Inherited
该注解表示注解是否具有继承的特性,子类可以继承父类中的这个注解
- 自己封装一个注解
首先需要创建一个接口,然后在interface前加上一个@,表示为自创的注解
这边需要注意的是因为这个注解是我们自己定义的,所以并不会像spring已经定义好的注解那样,这个自己定义的注解需要我们自己去扫描,也是利用到了反射的知识点,先创建class对象,然后创建构造器对象,获取实例,再利用获取字段数组的方法再利用获取注解的方法,最后判断空值,然后进行一波赋值