当前位置: 首页 > 面试题库 >

在龙目岛的生成器中使用自定义设置器

贝财
2023-03-14
问题内容

我在基于龙目岛的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();

我的自定义设置程序未调用,因此密码未编码。这让我很难过。

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

public void changePassword(String password, User user) {
    user.setPassword(password);
}

如何使Lombok的生成器使用我的自定义设置器?


问题答案:

根据文档@Builder:仅自己定义足够的框架。特别是,Lombok将生成一个class
UserBuilder,反映该User字段的字段和构建器方法,您可以自己提供其中的任何一个或全部。

@Builder
public class User {
    private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();

    private String username;

    private String password;

    public static class UserBuilder {
        public UserBuilder password(String password) {
            this.password = ENCODER.encode(password);
            return this;
        }
    }
}


 类似资料:
  • 我有以下类和映射器来映射它们。如何将地图结构配置为“不”使用龙目岛构建器?(不删除@Builder注释)?使用最新版本的龙目岛和地图结构时,地图结构将在使用@Builder注记时自动使用构建器。我找不到禁用它的方法,因为我需要在@AfterMapping方法中使用实例,因为构建器不会公开所有必需的方法(@SuperBuilder在此用例中是不允许的)

  • 我试图在带有Java8的Maven项目中使用Lombok,但是当我应用@Data注释时,Lombok不会生成任何Getters和Setters。我尝试使用这里提到的Maven编译器插件版本3.5,但没有帮助。有人知道我需要使用哪些版本吗? pom.xml

  • 问题内容: 我用我的代码自动生成和代码。我想添加其他个人并使用它。 例如,我想添加一个方法来验证列表中键的存在: 创建注释后,我将只需要执行以下操作: 问题答案: 一般注意事项 如果您已经在使用Lombok,则可以添加自定义Lombok转换批注和处理程序。 使用和定义存在注释 创建一个处理程序 public class HandleExists extends JavacAnnotationHan

  • 我只是试图将一个基于Maven的项目发送到另一台计算机上,而可怕的是,到处都是红色标记!! 但是,构建得很好。 很快,我注意到Lombok没有为我的类生成getter和setter,尽管和被Eclipse正确识别。

  • 已安装Lombok插件。使用Intellij15。模型的结构显示了getters和setters,但我从thymeleaf得到以下错误。 错误:

  • 我在使用Lombok在IntelliJ中构建我的项目时遇到了麻烦。Lombok似乎可以正常工作,直到我去构建工件,在任何使用Lombok getter的地方都会出现这个错误。 但是,此处显示的代码没有错误: 我启用了注释处理,而lombok是一个依赖项。我似乎不明白为什么会这样,