I have following DTOs:
@Value
public class PracticeResults {
@NotNull
Map<Long, Boolean> wordAnswers;
}
@Value
public class ProfileMetaDto {
@NotEmpty
String name;
@Email
String email;
@Size(min = 5)
String password;
}
@Value
is a Lombok annotation which generates a constructor. Which means that this class doesn't have a no-arg constructor.
I used Spring Boot 1.4.3.RELEASE and ObjectMapper
bean was able to deserialize such object from JSON.
After the upgrade to Spring Boot 2.0.0.M7 I receive following exception:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of PracticeResults (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
Jackson version used in Spring Boot 1.4.3 is 2.8.10
and for Spring Boot 2.0.0.M7 is 2.9.2
.
I've tried to Google this problem but found only solutions with @JsonCreator
or @JsonProperty
.
So, why does it work with Spring Boot 1.4.3 and fails with Spring Boot 2? Is it possible to configure bean to behave the same way as the older version?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…