Lombok 注解整理

1、@Getter and @Setter

使用

一般使用@Getter和/或@Setter注释在类上,会对所有非静态字段自动生成默认的getter / setter。

效果

默认的getter只是返回该字段,如果该字段被称为foo,则名为getFoo(如果该字段的类型为boolean,则为isFoo)。
默认生成的 getter / setter方法是公共的,除非你明确指定一个AccessLevel。合法访问级别为PUBLIC,PROTECTED,PACKAGE和PRIVATE。

禁止

可以使用AccessLevel.NONE访问级别来手动禁用任何字段的getter / setter生成。这使你可以覆盖类上的@Getter,@Setter或@Data注释的行为。

2、@ToString

可以使用@ToString注解toString()方法,默认将打印所有非静态字段,可以使用@ ToString.Exclude注释这些字段

3、@EqualsAndHashCode

任何类定义都可以使用@EqualsAndHashCode进行注释,以使lombok生成equals(Object other)和hashCode()方法的实现。
默认情况下,它将使用所有非静态,非瞬态字段,但是您可以通过使用@EqualsAndHashCode.Include标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)。

4、@NoArgsConstructor

将生成没有参数的构造函数。如果字段由final修饰,则将导致编译器错误,除非使用@NoArgsConstructor(force = true),否则所有final字段都将初始化为0 / false / null。对于具有约束的字段(例如@NonNull字段),不会生成任何检查。

@RequiredArgsConstructor为每个需要特殊处理的字段生成一个带有1个参数的构造函数。所有未初始化的final字段都会获取一个参数,以及所有未声明其位置的未标记为@NonNull的字段。

5、@Data

它将@ToString,@EqualsAndHashCode,@ Getter / @Setter和@RequiredArgsConstructor的功能捆绑在一起:换句话说,@Data生成通常与简单POJO关联的所有样板(普通的旧Java对象)和bean:所有字段的getter,所有非final字段的setter,以及涉及类字段的适当的toString,equals和hashCode实现,以及初始化所有final字段以及所有非final字段的构造函数没有使用@NonNull标记的初始化程序,以确保该字段永远不会为null。

6、@Builder

构建者模式
只能标注到类上,将生成类的一个当前流程的一种链式构造工厂,如下:

User buildUser = User.builder().username("riemann").password("123").build();

7、Accessors

链式风格
@Accessors批注用于配置lombok如何生成和查找getter和setter。
默认情况下,lombok遵循针对getter和setter的bean规范:例如,名为Pepper的字段的getter是getPepper。但是,有些人可能希望打破bean规范,以得到更好看的API。 @Accessors允许您执行此操作。
可标注在类或属性上,当然最实用的功能还是标注到类上。

new User().setUsername("riemann").setPassword("123");

8、@Slf4j and @Log4j

在需要打印日志的类中使用,项目中使用slf4j、log4j日志框架