【发布时间】:2020-10-22 15:57:31
【问题描述】:
我正在通过 Rest Template 在 Spring 中进行休息调用。
如果我用来映射的对象使用 Lombok 的 Getter/Setter,一切正常。
但如果我使用 Builder,它会因 InvalidDefinitionException 错误而中断。
如果我按照错误进行操作并添加构造函数,它确实有效。
但我试图避免它。我只是想让这些字段最终化,然后让 builder 来处理构建。
我能否就如何解决这个问题获得一些建议,或者如果这是预期的并且不能简单地坚持使用 Builder 并且确实需要构造函数?谢谢。
以下编译正常,但是当我进行其余调用时,会出现以下错误:
InvalidDefinitionException:无法构造实例
my.package.Genre(不存在创建者,如默认构造函数): 无法从 Object 值反序列化
@Builder
@Getter
public class Genre {
private long id;
private String name;
}
其余调用失败
return restTemplate.exchange(url, HttpMethod.GET, entity, Genre.class, params);
使用 Setter 时会通过以下内容。使用上面相同的 rest 调用进行测试。
@Getter
@Setter
public class Genre {
private long id;
private String name;
}
或者,如果我添加了试图不做的构造函数,以下方法也可以。
如果这是必须的,我会选择使用 Setter。做建议。
@Builder
@Getter
public class Genre {
private long id;
private String name;
public Genre() {
}
public Genre(long id, String name) {
this.id = id;
this.name = name;
}
}
【问题讨论】: