lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成 setter/getter/toString()/constructor之类的代码
1.idea安装插件
2.在pom文件中添加插件的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
3.常用注解
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、 hashCode、toString 方法
-
为所有属性,添加
@Getter
、@ToString
、@EqualsAndHashCode
注解的效果 -
为非
final
修饰的属性,添加@Setter
注解的效果 -
为
final
修改的属性,添加@RequiredArgsConstructor
注解的效果 -
@Data
注解的类,继承成了其它父类的属性,最好额外添加@ToString(callSuper = true)
和@EqualsAndHashCode(callSuper = true)
注解。 -
因为默认情况下,
@Data
注解不会处理父类的属性。所以需要我们通过callSuper = true
属性,声明需要调用父类对应的方法。 -
这个情况非常常见,例如说在实体类中,我们可能会声明一个抽象父类 AbstractEntity,而该类里有一个
id
编号属性。
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@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
,实现链式编程。
Lombok 还提供了 @CommonsLog
、@Flogger
、@Log
、@JBossLog
、@Log4j、@Log4j2、@Slf4jX 注解,支持持不同的 Logger 组件。因为 Spring Boot 使用 Slf4j 日志门面框架,所以绝大多数情况下,我们都是使用 @Slf4j
注解。
@NonNull
注解,添加在方法参数、类属性上,用于自动生成 null
参数检查。若确实是 null
时,抛出 NullPointerException 异常。