将我的项目更新到Spring Boot 1.5.10后,Lombok与Jackson不再正确工作。我指的是创建不可变DTO,当我的对象中的字段名称与json请求中的字段不同时:
@Value
@Builder
public class MyImmutableDto implements Serializable {
@JsonProperty("other-field-1-name")
private final BigDecimal myField1;
@JsonProperty("other-field-2-name")
private final String myField2;
and a lot of fields there...
}
所以,在将Spring Boot更新为1.5.10之后,这段代码不起作用了,我需要像这样配置lombok:lombok.anyConstructor.addConstructorProperties = true
有没有其他方法可以使用jackson + lombok创建这种对象而不需要使用lombok的修复方法呢?
除了这个修复方法,我可以使用以下代码:@JsonPOJOBuilder
和@JsonDeserialize(builder = MyDto.MyDtoBuilder.class)
:
@Value
@Builder
@JsonDeserialize(builder = MyDto.MyDtoBuilder.class)
public class MyDto implements Serializable {
// @JsonProperty("other-field-1-name") // not working
private final BigDecimal myField1;
private final String myField2;
private final String myField3;
and a lot of fields there...
@JsonPOJOBuilder(withPrefix = "")
public static final class MyDtoBuilder {
}
}
但是在 @JsonProperty("other-field-1-name")
上不起作用。
当然,可以通过简单的 @JsonCreator
来完成,但也许有一些方法可以使用 lombok 以及一些构造函数/ jackson 注释来实现?