2.1.1 建立域

应用程序的域是它所处理的主题领域 —— 影响应用程序理解的思想和概念。在 Taco Cloud 应用程序中,领域包括 Taco 设计、组成这些设计的成分、客户和客户下的 Taco 订单等对象。首先,我们将关注玉米饼配料。

在领域中,玉米饼配料是相当简单的对象。每一种都有一个名称和一个类型,这样就可以在视觉上对其进行分类(蛋白质、奶酪、酱汁等)。每一个都有一个 ID,通过这个 ID 可以轻松、明确地引用它。下面的成分类定义了需要的域对象。

程序清单 2.1 定义玉米饼的配料
package tacos;

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 类,最不寻常的事情可能是它似乎缺少一组常用的 getter 和 setter 方法,更不用说像 equals()hashCode()toString() 等有用的方法。

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

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

要使用 Lombok,需要将其作为依赖项添加到项目中。如果正在使用 Spring Tool Suite,只需右键单击 pom.xml 文件并从 Spring 上下文菜单选项中选择 Edit Starters 即可。在第 1 章(图 1.4)中给出的依赖项的相同选择将出现,这样就有机会添加或更改所选的依赖项。找到 Lombok 选项,确保选中,然后单击 OK;Spring Tool Suite 将自动将其添加到构建规范中。

或者,可以使用 pom.xml 中的以下条目手动添加它:

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

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

你会发现 Lombok 非常有用,但它是可选的。如果不希望使用它,或是不需要它来开发 Spring 应用程序,那么请随意手动编写那些缺少的方法。继续……我将等待。完成后,将添加一些控制器来处理应用程序中的 web 请求。

最后更新于