代码中的特殊标记。这些标记可以在编译、类加载、运⾏时被读取,并执⾏相对 应的处理

注解 - 图1

自定义注解

自定义注解首先要考虑什么时候解析这个注解, 这时候就需要用到@Retention 注解,
@Retention注解传⼊的是RetentionPolicy枚举,该枚举有三个常量,分别是SOURCECLASS
RUNTIME

  1. SOURCE 注解表示仅存在源级别中,并由编译器忽略
  2. CLASS 在编译时由编译器保留,但会被JVM忽略
  3. RUNTIME 会被jvm保留,运行环境可以使用

如果你想要在编译期间处理注解相关的逻辑,你需要继承AbstractProcessor 并实现
process⽅法。⽐如可以看到lombok就⽤AnnotationProcessor继承了AbstractProcessor。

理解上面内容就得到了代码.java编译到.class的过程

微信图片_20220329100858.jpg

可以用自定义注解搭配aop