В моем веб-приложении Spring REST я пытаюсь заставить контроллер работать с Java8 LocalTime. Я отправляю этот Json в POST-запросе
{
"hour": "0",
"minute": "0",
"second": "0",
"nano": "0"
}
и я получаю HttpMessageNotReadableException
со следующей ошибкой Джексона
Could not read JSON: No suitable constructor found for type [simple type, class java.time.LocalTime]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: org.apache.catalina.connector.CoyoteInputStream@58cfa2a0; line: 2, column: 5];
nested exception is com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class java.time.LocalTime]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: org.apache.catalina.connector.CoyoteInputStream@58cfa2a0; line: 2, column: 5]
Я использую spring-web-4.0.3.RELEASE с spring-boot-starter-web-1.0.2.RELEASE, jackson-databind-2.4.2 и jackson-datatype-jsr310-2.4.2.
Из того, что я понял, погуглив, Spring должен автоматически регистрировать модули JSR-310 для объектов Java8.time.
Я нашел ответ на свою проблему, но он у меня не работает: Spring Boot и Jackson, JSR310 в теле ответа
У меня нет конфигураций, аннотированных с помощью @EnableWebMvc, и вот мой единственный класс конфигурации
@EnableAutoConfiguration
@ComponentScan
@EnableAspectJAutoProxy()
@Configuration
@ImportResource(value = "Beans.xml")
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToLocalDateTime());
registry.addConverter(new LocalDateTimeToString());
registry.addConverter(new StringToLocalDate());
registry.addConverter(new LocalDateToString());
registry.addConverter(new StringToLocalTime());
registry.addConverter(new LocalTimeToString());
}
}
Можете подсказать, что не так в моей конфигурации?