У меня есть следующие DTO:
@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 представляет собой аннотацию Lombok, которая генерирует конструктор. Это означает, что этот класс не имеет конструктора no-arg.
Я использовал Spring Boot 1.4.3.RELEASE и ObjectMapper bean смог десериализовать такой объект из json.
После обновления до Spring Boot 2.0.0.M7 я получаю следующее исключение:
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, используемая в Spring Boot 1.4.3, составляет 2.8.10
а для Spring Boot 2.0.0.M7 - 2.9.2
.
Я попытался Google решить эту проблему, но нашел только решения с @JsonCreator
или @JsonProperty
.
Итак, почему он работает с Spring Boot 1.4.3 и не работает с Spring Boot 2? Можно ли настроить bean для того, чтобы вести себя так же, как и более старая версия?