使用 Lombok 省略你的代码

2020/10/26 41

程序清单 2.1

package wang.doghappy.tacocloud;

import lombok.Data;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
public class Ingredient {
    private final String id;
    private final String name;
    private final Type type;

    public static enum Type {
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
    }
}

这是一个普通的 Java 域类,定义了描述一个成分所需的三个属性。对于程序清单 2.1 中定义的 Ingredient 类,最不寻常的事情可能是它似乎缺少一组常用的 gettersetter 方法,更不用说像 equals()hashCode()toString() 等有用的方法。

在清单中看不到它们,部分原因是为了节省空间,但也因为使用了一个名为 Lombok 的出色库,它会在运行时自动生成这些方法。实际上,类级别的 @Data 注释是由 Lombok 提供的,它告诉 Lombok 生成所有缺少的方法,以及接受所有final属性作为参数的构造函数。通过使用 Lombok,可以让 Ingredient 的代码保持整洁。

Lombok 不是一个 Spring 库,但是它非常有用,没有它我很难开发。当我需要在一本书中保持代码示例简短明了时,它就成了我的救星。

可以在 pom.xml 中手动添加它

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

此依赖项将在开发时提供 Lombok 注释(如 @Data),并在运行时提供自动方法生成。但是还需要在 IDE 中添加 Lombok 作为扩展,否则 IDE 将会报错缺少方法和没有设置的最终属性。

你会发现 Lombok 非常有用,但它是可选的。如果不希望使用它,或是不需要它来开发 Spring 应用程序,那么请随意手动编写那些缺少的方法。

——Spring 实战(第五版)