Lombok 简介
关联:Lombok 使用示例、编译异常
官方文档:Project Lombok
1. 概述
Lombok 是一个 Java 工具,通过使用其定义的注解,自动生成常见的冗余代码,提升开发效率。
2. 实现原理
基于 JSR269(Pluggable Annotation Processing API) 规范,自定义编译器注解处理器,用于在 Javac 编译阶段时,扫描使用到 Lombok 定义的注解的类,进行自定义的代码生成。
3. 注解说明
@Getter
注解,添加在类或属性上,生成对应的 get 方法。@Setter
注解,添加在类或属性上,生成对应的 set 方法。@ToString
注解,添加在类上,生成 toString 方法。@EqualsAndHashCode
注解,添加在类上,生成 equals 和 hashCode 方法。@AllArgsConstructor
、@RequiredArgsConstructor
、@NoArgsConstructor
注解,添加在类上,为类自动生成对应参数的构造方法(全参构造、必填项 [@NonNull 属性作为参数] 构造、无参构造)。@Data
注解,添加在类上,是 5 个 Lombok 注解的组合。为所有属性,添加
@Getter
、@ToString
、@EqualsAndHashCode
注解的效果为非
final
修饰的属性,添加@Setter
注解的效果为
final
修改的属性,添加@RequiredArgsConstructor
注解的效果
@Value
注解,添加在类上,和@Data
注解类似,区别在于它会把所有属性默认定义为private final
修饰,所以不会生成 set 方法。@CommonsLog
、@Flogger
、@Log
、@JBossLog
、@Log4j
、@Log4j2
、@Slf4j
、@XSlf4j
注解,添加在类上,自动为类添加对应的日志支持。@NonNull
注解,添加在方法参数、类属性上,用于自动生成null
参数检查。若确实是null
时,抛出 NullPointerException 异常。@Cleanup
注解,添加在方法中的局部变量上,在作用域结束时会自动调用#close()
方法,来释放资源。例如说,使用在 Java IO 流操作的时候。@Builder
注解,添加在类上,给该类加个构造者模式 Builder 内部类。@Synchronized
注解,添加在方法上,添加同步锁。@SneakyThrows
注解,添加在方法上,给该方法添加try catch
代码块。@Accessors
注解,添加在方法或属性上,并设置chain = true
,实现链式编程。
3.1 @Accessors
详解
3.1.1 fluent 属性
默认为false,设置为true时,调用getter、setter方法时,可以省略掉get、set直接[.属性]
3.1.2 chain 属性
默认为false,设置为true时,对应字段的 setter 方法调用后,会返回当前对象。
且可实现链式编程
3.1.3 prefix 属性
该属性是一个字符串数组,当该数组有值时,表示忽略字段中对应的前缀,生成对应的 getter 和 setter 方法。