龙目岛@Data 和@Builder 组合

Lombok @Data and @Builder combination

您好,我有一个关于@Data 和@Builder 组合的问题。 让我们想象一下这种情况:我有必须创建和修改的实体。 首先我创建它:

Entity entity = Pojo.builder()
.a("1")
.b("2")
.build();

经过一些操作,我不得不添加c字段并修改a。 我该怎么做? 这正常吗:

entity.setA("01");
entity.setC("3");
repo.save(entity);

还有更好的变体吗?

没关系。 Buider -> 对象创建,Set -> 创建后对象设置。

Builder 设计模式的目的是将复杂对象的构造与其表示分开。它是四人组设计模式之一。

您可以使用 setter 始终在实体上使用 @Accessors(chain = true) 来创建对象和设置字段。 chain 选项给我们 setters that return this。

Entity entity= new Entity().setName("Name").setBalance(10);
entity.setName("newName");

请注意,chain 默认为 true,但为了清楚起见,我明确设置了它。

对于没有 get 或 set 前缀的访问器,使用 @Accessors(fluent = true)

Entity entity= new Entity().name("Name").balance(10);