什么是lombok
Lombok 是一个 Java 工具,通过使用其定义的注解,自动生成常见的冗余代码,提升开发效率。
举个例子,在 Java POJO 类上,添加 @Setter 和 @Getter 注解,自动生成 set、get 方法的代码。示例如下:
// 我们编写的 UserDO.java 代码
@Setter
@Getter
public class UserDO {
private String username;
}
// 实际生成的代码(通过 UserDO.class 反编译)
public class UserDO {
private String username;
public UserDO() {
}
public void setUsername(final String username) {
this.username = username;
}
public String getUsername() {
return this.username;
}
}
使用lombok
-
在idea plugins功能中搜索Lombok关键字, 选择install按钮安装,下图是已经安装好的Lombok,安装完成后需要重启Idea使plugin生效
-
项目中使用需要引入Lombok依赖
<!-- 引入 Lombok 依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> <version>1.18.12</version> </dependency>
-
添加Idea编码阶段对Lombok支持
点击File -settings设置界面,选择Enable annotation processing选项,开启该项是为了让Lombok注解在编译阶段起到作用。
以文章开始的例子来说明,UserDO中并没有写getset方法,在其他类中写入userDO.setUsername(""),会提示报错,开启该选项后。编码阶段就不会报错,且在编写代码时Idea会弹出智能提示
lombok注解
@Getter
注解,添加在类或属性上,生成对应的 get 方法。
@Setter
注解,添加在类或属性上,生成对应的 set 方法。
@ToString
注解,添加在类上,生成 toString 方法。
@EqualsAndHashCode
注解,添加在类上,生成 equals 和 hashCode 方法。
@AllArgsConstructor
、@RequiredArgsConstructor
、@NoArgsConstructor
注解,添加在类上,为类自动生成对应参数的构造方法。
@Data
注解,添加在类上,是 5 个 Lombok 注解的组合。
- 为所有属性,添加
@Getter
、@ToString
、@EqualsAndHashCode
注解的效果 - 为非
final
修饰的属性,添加@Setter
注解的效果 - 为
final
修改的属性,添加@RequiredArgsConstructor
注解的效果
@Value
注解,添加在类上,和 @Data
注解类似,区别在于它会把所有属性默认定义为 private final
修饰,所以不会生成 set 方法。
@CommonsLog、@Flogger、@Log、@JBossLog、@Log4j、@Log4j2、@Slf4j、@Slf4jX
注解,添加在类上,自动为类添加对应的日志支持。
@NonNull
注解,添加在方法参数、类属性上,用于自动生成 null
参数检查。若确实是 null
时,抛出 NullPointerException 异常。
@Cleanup
注解,添加在方法中的局部变量上,在作用域结束时会自动调用 #close()
方法,来释放资源。例如说,使用在 Java IO 流操作的时候。
@Builder
注解,添加在类上,给该类加个构造者模式 Builder 内部类。
@Synchronized
注解,添加在方法上,添加同步锁。
@SneakyThrows
注解,添加在方法上,给该方法添加 try catch
代码块。
@Accessors
注解,添加在方法或属性上,并设置 chain = true
,实现链式编程。