1 maven依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
    <version>1.18.24</version>
</dependency>

2 注解详情

2.1 @Data(@Getter+@Setter)

为属性生成get和set方法。

2.2 @NoArgsConstructor

提供无参构造函数。

2.3 @AllArgsConstructor

提供全参构造函数

2.4 @RequiredConstructor

提供@NotNull修饰的字段或者final修饰的字段的构造函数。

2.5 @ToString

生成toString方法。

2.6 @EqualsAndHashCode

生成equals和hashCode方法。
hashCode:在同一个对象上多次调用hashCode,如果equals的条件没发生改变,那么要返回相同的值。

  1. 如果两个对象equals,那么hashCode一定相同。
  2. 如果两个对象不equalshashCode可能会出现相同。

2.7 @SuperBuilder

提供对象builder构造器。

2.8 @Accessors

配置@Data使用

  1. fluent:生成的方法没有get和set前缀
  2. chain:生成的get和set方法可以链式调用。

2.9 @FieldDefault

  1. level 设置字段的默认访问类型。

2.10 @SneakyThrows

注解用于方法上,可以将方法中的代码用try...catch包裹,自动捕获异常,可以指定抛出异常的类型。

2.11 @Cleanup

用在局部变量上,能够自动释放资源。

2.12 @NotNull

用在成员方法或者构造方法的参数上,自动生成一个不为空的检查。

2.13 @Synchonized

作用于方法上,可以替换synchronized关键字或lock锁。
synchronized和lock

2.14 @Slf4j等

生成日志对象

2.15 @Delegate

注释属性,会把属性的公有非静态方法合并过来。

2.16 @Singular

注释一个集合属性,配置@Builder使用。

@Builder
public class Demo{
@Singular("num")
List<Integer> nums;
}

Demo demo=Demo.builder().num(1).num(2).build();