相关疑难解决方法(0)

在Lombok的构建器中使用自定义setter

我在基于Lombok的POJO中有一个自定义setter:

@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);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我使用Lombok生成的构建器时:

User user = User.builder()
    .password(password)
    .build();
Run Code Online (Sandbox Code Playgroud)

我的自定义setter未被调用,因此密码未被编码.这让我很伤心.

当然,直接使用我的自定义setter时会调用它:

public void changePassword(String password, User user) {
    user.setPassword(password);
}
Run Code Online (Sandbox Code Playgroud)

如果让Lombok的构建器使用我的自定义setter,我该怎么办?

java lombok

28
推荐指数
4
解决办法
2万
查看次数

标签 统计

java ×1

lombok ×1