У меня была следующая конфигурация Джексона.
@Configuration
public class JacksonConfiguration {
@Bean
public JavaTimeModule javaTimeModule() {
return new JavaTimeModule();
}
@Bean
public Jdk8Module jdk8TimeModule() {
return new Jdk8Module();
}
@Bean
public Hibernate5Module hibernate5Module() {
return new Hibernate5Module();
}
@Bean
public AfterburnerModule afterburnerModule() {
return new AfterburnerModule();
}
@Bean
ProblemModule problemModule() {
return new ProblemModule();
}
@Bean
ConstraintViolationProblemModule constraintViolationProblemModule() {
return new ConstraintViolationProblemModule();
}
}
Затем я добавил класс JsonUtil, который создает объект сопоставления объектов с модулями, описанными в JacksonConfiguration.class
@RequiredArgsConstructor
public class JsonUtil {
private static ObjectMapper mapper;
public static synchronized ObjectMapper getObjectMapper() {
if (mapper == null) {
mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new Hibernate5Module());
mapper.registerModule(new AfterburnerModule());
mapper.registerModule(new ProblemModule());
mapper.registerModule(new ConstraintViolationProblemModule());
}
return mapper;
}
@Configuration
public class JacksonConfiguration {
@Bean
@Primary
public ObjectMapper mapper() {
return JsonUtil.getObjectMapper();
}
}
Теперь, когда вызывается REST-контроллер, вызывается моя реализация objectmapper (JsonUtil.mapper).
Проблема в том, что у меня есть класс с переменным типом Instant, предыдущая версия десериализует его как datetime (или оставил егонетронутый, поскольку значение в базе данных является датой-временем), текущая реализация десериализуется до времени эпохи.
public class SomeClass {
// ...
@NotNull
@Column(name = "column3", nullable = false)
private Instant someVariable;
}
До: "someVariable": "2018-10-23T08: 11: 00Z"
После: "someVarible ": 1540282260
Почему Джексон не может сериализовать эту переменную, как раньше, хотя я зарегистрировал все модули, которые были в классе JacksonConfiguration?
springBoot: 2.0.8