Lombok让pojo变得更优雅

Lombok 采取注解的形式,标记在pojo上面,在编译后,自动生成相应的方法,像get、set、构造方法等都可以注解一键生成。

引入jar包:

1 <dependency>
2     <groupId>org.projectlombok</groupId>
3     <artifactId>lombok</artifactId>
4     <version>${lombok.version}</version>
5     <scope>provided</scope>
6 </dependency>

使用方法:

1 public class GetterSetterExample {
2   @Getter @Setter private int age = 10;
3   @Setter(AccessLevel.PROTECTED) private String name;
4   @Override public String toString() {
5     return String.format("%s (age: %d)", name, age);
6   }
7 }
 1 Data public class DataExample {
 2   private final String name;
 3   @Setter(AccessLevel.PACKAGE) private int age;
 4   private double score;
 5   private String[] tags;
 6   @ToString(includeFieldNames=true)
 7   @Data(staticConstructor="of")
 8   public static class Exercise<T> {
 9     private final String name;
10     private final T value;
11   }
12 }

基本注释:

1 @Getter
2 @Setter
3 @ToString
4 @EqualsAndHashCode  //构造函数
5 @AllArgsConstructor  //会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验, 全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。
6 @NoArgsConstructor  //无参构造函数
7 @RequiredArgsConstructor  //会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法

集合注释:

@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

@NonNull 该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。

@Cleanup 该注解注解在流成员变量上能帮助我们自动调用close()方法,很大的简化了代码。

原文地址:https://www.cnblogs.com/guanghe/p/10277180.html