原文:https://blog.csdn.net/weixin_41540822/article/details/86606535
1、maven依赖2、lombok常用注解 2.1、@Getter/@Setterorg.projectlombok lombok1.18.12
使用范围:类上、类中字段上,让lombok自动生成默认的getter/setter。
包装类型的Boolean 字段 flag, 生成的getter方法仍然是getFlag(),
基本数据类型boolean 字段 updateFlag,生成的getter方法为:isUpdateFlag()
作用在类上:
package com.example.entity;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Consumer {
private String name;
private int age;
private Boolean flag;
private boolean updateFlag;
}
// 编译后
public class Consumer {
private String name;
private int age;
private Boolean flag;
private boolean updateFlag;
public Consumer() { }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public Boolean getFlag() { return flag; }
public void setFlag(Boolean flag) { this.flag = flag; }
public boolean isUpdateFlag() { return updateFlag; }
public void setUpdateFlag(boolean updateFlag) { this.updateFlag = updateFlag; }
}
2.1.1、 AccessLevel精确定义访问权限
lombok生成的getter / setter方法默认是 public的。在Java中合法访问级别为PUBLIC,PROTECTED,PACKAGE和PRIVATE,AccessLevel是有一个枚举类型,主要定义访问权限,如下所示:
public enum AccessLevel {
PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE,
NONE;
}
使用AccessLevel来定义方法的访问权限,可以有两种方式:
1、在类上的@Getter 、@Setter中添加value = AccessLevel.PRIVATE,那么则会应用到类中的所有属性上;
2、在类中属性上的@Getter、 @Setter中添加value = AccessLevel.PRIVATE,那么会覆盖在类上添加的权限控制。
在类AccessLevel中会看到AccessLevel.NONE,可以使用AccessLevel.NONE来定义字段的访问级别,意思是采用手动方式禁止此字段的getter / setter生成。 这个操作可以覆盖类上的@Getter,@Setter或@Data注释的行为。
示例:
@Getter
@Setter(value = AccessLevel.PRIVATE)
public class Consumer2 {
@Setter(value = AccessLevel.PUBLIC) // 测试在属性上定义会覆盖在类上的定义
private String name;
@Getter(value = AccessLevel.PRIVATE)
private int age;
private Boolean flag;
private boolean updateFlag;
}
// 编译后
public class Consumer {
private String name;
private int age;
private Boolean flag;
private boolean updateFlag;
public Consumer2() {
}
public String getName() {
return this.name;
}
public Boolean getFlag() {
return this.flag;
}
public boolean isUpdateFlag() {
return this.updateFlag;
}
private void setAge(final int age) {
this.age = age;
}
private void setFlag(final Boolean flag) {
this.flag = flag;
}
private void setUpdateFlag(final boolean updateFlag) {
this.updateFlag = updateFlag;
}
public void setName(final String name) {
this.name = name;
}
private int getAge() {
return this.age;
}
}
2.1.2、配置文件定制Lombok
注:使用lombok.config时,lombok需要lombok 1.14+
我们可以使用配置文件lombok.config来定制Lombok,通过配置我们可以使用Lombok的功能,比如链式调用。可以将lombok.config的配置文件放到任意位置,lombok.config的作用范围是所在当前位置目录及子目录。出于规范,建议放在根目录或者src目录下。
如果在当前目录的子目录中还存在一个lombok.config配置文件,那么对于子目录中的的实体类会优先选择使用子目录中的配置,而当前目录(父目录)下的相同的的配置项会被子目录下的配置覆盖掉。
配置文件:
# 禁止生成以 set/get/is 为前缀的方法,以字段名为方法名。 lombok.accessors.fluent = [true | false] (default: false) # 在生成的get/set/is 方法名中,添加前缀(或去掉字段中的某些前缀),eg:getPerfixFoo(), lombok.accessors.prefix += a field prefix (default: empty list) # 禁止生成 is 为前缀的方法 lombok.getter.noIsPrefix = [true | false] (default: false) # 禁止使用 @Setter lombok.setter.flagUsage = [warning | error] (default: not set) # 禁止使用 @Getter lombok.getter.flagUsage = [warning | error] (default: not set) # 复制可以使用的注解:e.g. @Nullable/@NonNull annotations lombok.copyableAnnotations = [A list of fully qualified types] (default: empty list)2.2、@Data、@Value
@Data注解在类上,将类提供的所有属性都添加get、set方法,并添加equals、canEquals、hashCode、toString方法
@Value注解用于修饰类,相当于是@Data的不可变形式,因为字段都被修饰为private和final,默认的情况下不会生成settter。还有一点更狠的,默认类本身也是final的,不能被继承。
详细说明: https://blog.csdn.net/weixin_41540822/article/details/86606535
2.3、@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor@NoArgsConstructor在类上使用,它可以提供一个无参构造器。
@AllArgsConstructor同样是在类上使用,该注解提供一个全参数的构造方法,默认不提供无参构造。需要注意的是,这里的全参不包括已初始化的final字段(主要是final字段,一旦被赋值不允许再被修改)。
@RequiredArgsConstructor也是在类上使用,但是这个注解可以生成带参的构造方法。只能是类中所有带有 @NonNull注解的和以final修饰的未经初始化的字段
详细说明 : https://blog.csdn.net/weixin_41540822/article/details/86606535
2.4、@ToStirng添加一个toString方法
2.5、@NotNull
不能为空,否则抛出空指针异常



