我在基于 Lombok 的 POJO 中有一个自定义设置器:
@Data
@Builder
public class User {
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
private String password = null;
public void setPassword(String password) {
Assert.notNull(password);
this.password = ENCODER.encode(password);
}
但是当我使用 Lombok 生成的构建器时:
User user = User.builder()
.password(password)
.build();
我的自定义 setter 未被调用,因此密码未被编码。这让我很难过。
当我直接使用它时,当然会调用我的自定义设置器:
public void changePassword(String password, User user) {
user.setPassword(password);
}
我该怎么做才能让 Lombok 的构建器使用我的自定义二传手?
原文由 Jan Nielsen 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据
@Builder
的文档:只需自己定义足够的骨架。特别是,Lombok 将生成一个类UserBuilder
、镜像User
字段的字段和构建器方法,您可以自己提供任何或所有这些。