导入架包或Maven添加依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
注解:
@NoArgsConstructor 创建无参构造器(如果类中含有final修饰的成员变量则无法使用)
@RequiredArgsConstructor 以类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法
@AllArgsConstructor 全参构造器(不会把父类的属性加到构造器中)
@Cleanup 默认是调用资源的close()方法
@Data 效果等同于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor (不包括@NoArgsConstructor和@AllArgsConstructor)
@Value 和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法
@ToString toString()
@EqualsAndHashCode equals和hashcode、canEqual方法
@Getter/@Setter 用在成员变量上为成员变量生成对应的get和set方法,用在类上面为此类里的所有非静态成员变量生成对应的get和set方法(如果是final变量,那就只会有get方法)
@NonNull 用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常
@Log4j 用在类上相当于private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(类名.class);
Lombok这款插件依靠可插件化的Java自定义注解处理API(JSR 269: Pluggable Annotation Processing API)来实现在Javac编译阶段利用“Annotation Processor”对自定义的注解进行预处理后生成真正在JVM上面执行的“Class文件”
在Javac 解析成AST抽象语法树之后, Lombok 根据自己编写的注解处理器,动态地修改 AST,增加新的节点(即Lombok自定义注解所需要生成的代码),最终通过分析生成JVM可执行的字节码Class文件。