Я только что узнал, что когда я использовал JDK 8, мне пришлось зарегистрировать JavaTimeModule, чтобы добавить поддержку java .time API.
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
В противном случае я мог бы получить ошибку, подобную этой:
com.fasterxml.jackson.datab
ind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected VALUE_STRING
Однако, когда я перешел на JDK 11, я заметил, что он работает даже без регистрации модуля. Даже если я просто пытаюсь запустить одно и то же приложение на двух разных JDK (8/11) (без изменения версий других библиотек), оно все равно не работает для JDK 8 без регистрации модуля, но работает для JDK 11.
Я не могу найти никаких специфических c сериализаторов / десериализаторов, которые бы помогли JDK 11 справиться с этим самостоятельно. Было ли что-нибудь добавлено в JDK или другие библиотеки, чтобы не требовалось регистрировать новый JavaTimeModule? В противном случае я был бы очень осторожен, когда думал о факте добавления или пропуска этого.