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 领域类,它定义了描述配料所需的 3 个属性。在上面代码中,Ingredient 类最不寻常的一点是它似乎缺少了常见的 getter 和 setter 方法,以及 equals()
、hashCode()
、toString()
等方法。
在代码中没有这些方法,部分原因是节省空间,此外还因为我们使用了名为 Lombok 的库(这是一个非常棒的库,它能够在运行时动态生成这些方法)。实际上,类级别的 @Data
注解就是由 Lombok 提供的,它会告诉 Lombok 生成所有缺失的方法,同时还会生成所有以 final
属性作为参数的构造器。通过使用 Lombok,我们能够让 Ingredient 的代码简洁明了。
要使用 Lombok,首先要将其作为依赖添加到项目中。在 pom.xml
中通过如下条目进行手动添加:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
@Slf4j
,这是 Lombok 所提供的注解,在运行时,它会在这个类中自动生成一个 SLF4J(Simple Logging Facade for Java)Logger。这个简单的注解和在类中通过如下代码显式声明的效果是一样的:
private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(DesignTacoController.class);