在 Java DTO 类上使用数据注释

Mic*_*ael 3 java spring dto lombok spring-boot

我对 DTO 类使用数据注释感到困惑。这是我的示例课程。

@Data
public class MyClass {
   private Long id;
   private String name;
}
Run Code Online (Sandbox Code Playgroud)

我在网上读到,专门在 DTO 类上使用数据注释将允许通过使用生成的设置器来更改字段的值。

我应该删除 lombok 数据注释吗?并手动实现 getter 和 setter。

谢谢 :)

rou*_*gou 5

我会避免将 @Data 用于 DTO,因为它有太多陷阱。首先,正如您提到的,它是可变的,对于 DTO 来说您并不真正需要这一点。尽管它是可变的,但它实现了 equals() 和 hashCode() ,这只是自找麻烦。

您可以将 @Value 用于不可变的 DTO。对于传入的 DTO,您可能需要添加lombok.anyConstructor.addConstructorProperties到 lombok.config,这将允许像 jackson 这样的库在没有默认构造函数的情况下反序列化到您的 POJO。