Lombok

Lombok介绍

Lombok 项目其实就是一个 java 库,它可以自动插入到编辑器和构建工具中,增强 java 的性能。以后你 只需要一些简单的注解,就可以再也不用在类中反复去写 getter、equals 等方法,让代码变得简介,不用过多地去关注相应的方法。属性修改时,也简化了维护这些属性所生成的 get、set 方法。

使用方式:

  1. IDEA 下载 Lombok 插件

  2. 项目中导入 Lombok 的 jar 包

1
2
3
4
5
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
  1. 实体类 上使用 Lombok 注解

Lombok 注解

  • @Data

    自动创建无参构造函数、get、set、toString、hashcode、equals 方法

  • @AllArgsConstructor

    自动创建所有参数的构造函数。可以通过access属性指定访问级别:

    1
    @AllArgsConstructor(access = AccessLevel.PRIVATE)
  • @NoArgsConstructor

    自动创建无参构造函数,可以通过access属性指定访问级别。

  • @EqualsAndHashCode

    可以通过of属性指定参与equalshashcode的字段:

    1
    @EqualsAndHashCode(of = {"name", "sex"}
  • @ToString

  • @Getter/@Setter

  • @Singular

    在集合属性上使用该注解,可以往集合中单独增加元素。

  • @Builder

    可以类似于链式地调用对象进行赋值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @Data
    @Builder
    @Slf4j
    class Student {
    private String name;
    private int age;
    private int score;

    @Singular("addHobby")
    private List<String> hobby;

    public static void main(String[] args) {
    Student stu = Student.builder().name("HELLO").age(8).addHobby("read").addHobby("dance").build();
    log.info("stu: {}", stu);
    }
    }
  • @SneakyThrows

    异常处理。

  • @Accessors

    可以通过chain属性,对属性进行链式操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Data
    @Slf4j
    @Accessors(chain = true)
    class Student {
    private String name;
    private int age;

    public static void main(String[] args) {
    Student stu = new Student();
    stu.setName("老王").setAge(10);
    log.info("stu: {}", stu);
    }
    }
  • @FieldNameConstants

    提供字符串形式的类的属性名的常量。使用方式是Fields.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Data
    @Builder
    @Slf4j
    @FieldNameConstants
    class Student {
    private String name;
    private int age;

    public static void main(String[] args) {

    log.info(Fields.age);
    }
    }