Lombok - 使用注解让你的JavaBean变得更加简洁

Lombok - 工具简介:

Lombok是一个编译时注释预处理器,有助于在编译时注入一些代码。Lombok提供了一组在开发时处理的注释,以将代码注入到Java应用程序中,注入的代码在开发环境中立即可用。在详细介绍之前,可以去其官网看一下作者提供的视频,视频中阐述了Lombok 的简单用法。https://projectlombok.org/

Lombok - 安装过程:

基于 Maven:

示例代码:

1
2
3
4
5
6
7
8
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
</dependencies>

添加好 Maven 依赖之后,就可以在代码中使用 Lombok 的注解来简化代码了。

基于IntelliJ IDEA:

安装 Lombok IntelliJ plugin:

Jetbrains IntelliJ IDEA Editor完全兼容 Lombok,要在 IDEA 中使用 Lombok,那就需要在IntelliJ IDEA 中安装 Lombok IntelliJ plugin 插件,以下为安装步骤:

  • Go to File > Settings > Plugins

  • Click on Browse repositories...

  • Search for Lombok Plugin

  • Click on Install plugin

  • Restart IntelliJ IDEA

具体安装过程可参考官网或者插件 Github 主页。

在IntelliJ IDEA使用Lombok:

  • Go to Refactor > Lombok
  • 在打开的 JavaBean 文件中按照需求添加相应的注解即可。

Lombok - 常用注解:

你如果是使用IDEA的话,在当前文件上按command+F12,或者长按command在左侧找到Structure,就能够看到 lombok 为当前类生成的方法。

  • @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    import lombok.Data;

    @Data
    public class Person {
    private String firstName;
    private String lastName;
    private String job;
    }
  • @Setter/@Getter:注解在属性或类上;为属性提供 Setter/Getter 方法

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import lombok.Getter;
    import lombok.Setter;

    // 只为 firstName 生成Getter、Setter 方法
    public class Person {
    @Getter
    @Setter
    private String firstName;
    private String lastName;
    private String job;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import lombok.Getter;
    import lombok.Setter;

    @Getter
    @Setter
    public class Person {
    // 为所有字段生成Getter、Setter 方法

    private String firstName;
    private String lastName;
    private String job;
    }
  • @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

  • @Value:此注解集@equals()、@hashCode()、@toString()、@Getter()于一身。

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import lombok.Value;
    import lombok.experimental.NonFinal;

    @Value
    public class Person {
    /** 类本身以及类中所有的字段都是private final类型的,不会生成Setter方法。
    * 可以通过显式指定某个注解覆盖掉默认的属性。
    * 通过@NonFinal注解修饰的字段,不是final类型的。
    */
    String firstName;

    String lastName;
    @NonFinal
    String job;
    }

  • @NoArgsConstructor/@AllArgsConstructor: 自动生成无参数构造函数/全参构造函数。

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import lombok.AllArgsConstructor;
    import lombok.NoArgsConstructor;

    @NoArgsConstructor
    @AllArgsConstructor
    public class Person {
    private String firstName;

    private String lastName;

    private String job;
    }

  • @NonNull :修饰方法、构造函数的参数或者类字段,Lombok自动生成一个非空检测语句。

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    import lombok.NonNull;

    public class Person{
    public String Example(@NonNull String sum){

    return null;
    }
    }

  • @Synchronized 将方法变成同步方法

  • @SneakyThrows:将受检异常转换为非受检异常,避免抛出或尝试语句。

lombok 项目官网上还有一些其他注解的用法,此处就不列举了,附链接:https://projectlombok.org/features/all

参考资料: