我在基于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,我该怎么办?