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
的条件没发生改变,那么要返回相同的值。
- 如果两个对象
equals
,那么hashCode
一定相同。 - 如果两个对象不
equals
,hashCode
可能会出现相同。
2.7 @SuperBuilder
提供对象builder构造器。
2.8 @Accessors
配置@Data使用
- fluent:生成的方法没有get和set前缀
- chain:生成的get和set方法可以链式调用。
2.9 @FieldDefault
- 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();
好记性不如烂笔头,让积累成为一种习惯。