spring的自定义注解:
1.@Retention(保持)
2.@Target
3.@Documented
4.@Inherited
1.Retention(保持)
它的作用是:用来
定义注解的生命周期的
,并且在使用时需要指定RetentionPolicy,RetentionPolicy有三种策略,分别是:
source- 注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃。
class - 注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期。
runtime - 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。
2.@Target
@Target注解是
限定自定义注解可以使用在哪些地方
3.@Documented
@Documented的作用是
对自定义注解进行标注,如果使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来。没什么实际作用,了解一下就好了
4.@Inherited
被@Inherited修饰的注解,被用在父类上时其子类也拥有该注解。
在父类使用了被@Inherited修饰的注解@InheritedTest时,继承它的子类也拥有@InheritedTest注解。
总结:只要理解和记住jdk内置的四个注解即可 (@Target,@Retention,@Documented,@Inherited)
@Retention:保留的时间范围 (RetentionPolicy)
SOURCE源文件保留(如@Override保留在源文件,编译后注解消失)
CLASS编译时保留(如lombok生成get/set)
RUNTIME运行时保留(如切面记录日志,或验证参数信息等)
@Target:使用范围 (ElementType)
packages、types(类、接口、枚举、注解类)、类成员(方法、构造方法、成员变量、枚举值)
@Documented:保留注解信息
@Inherited:子类注解自动继承该注解