注解
小于 1 分钟
说一下你对注解的理解?
Java注解本质上是一个标记
注解可以标记在类上、方法上、属性上等,标记自身也可以设置一些值
有了标记之后,我们就可以在编译或者运行阶段去识别这些标记,然后搞一些事情,这就是注解的用处
- AOP,使用注解作为切点就是运行期注解的应用
- lombok,就是注解在编译期的运行
注解生命周期
RetentionPolicy.SOURCE
给编译器用的,不会写入 class 文件
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { }
RetentionPolicy.CLASS
会写入 class 文件,在类加载阶段丢弃,也就是运行的时候就没这个信息了
没找到
RetentionPolicy.RUNTIME
会写入 class 文件,永久保存,可以通过反射获取注解信息
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Autowired { /** * Declares whether the annotated dependency is required. * <p>Defaults to {@code true}. */ boolean required() default true; }