I\'m working on converting some models in a spring-boot REST API app to use java 8\'s java.time.LocalDateTime
instead of joda\'s DateTime
. I want the t
Your ObjectMapper
bean must be marked as @Primary
in order to be picked up by Spring. Alternatively, you can just create a JavaTimeModule
bean and it will get picked up by Spring and added to the default object mapper.
You've probably seen it already but take a look at the official documentation.
The NoSuchMethodError
is because you are mixing versions of Jackson. Spring Boot 1.3.6 uses Jackson 2.6.7 and you are using 2.8.1 of jackson-datatype-jsr310
.
Spring Boot provides dependency management for Jackson, including jackson-datatype-jsr310
, so you should remove the version from your pom. If you want to use a different version of Jackson, you should override the jackson.version
property:
<properties>
<jackson.version>2.8.1</jackson.version>
</properties>
This will ensure that all your Jackson dependencies have the same version, thereby avoiding problems with mismatched versions.
You can also, if you wish, remove your Java code that's configuring the ObjectMapper
. The Java Time module will be automatically registered when it's in the classpath and writing dates as timestamps can be configured in application.properties
:
spring.jackson.serialization.write-dates-as-timestamps=false
The error occurs because you mix versions of Jackson. You are using version 1.3.6.RELEASE
of Spring Boot. If you would migrate to Spring Boot version 2.x.x.RELEASE
then you can replace the com.fasterxml.jackson.datatype
dependency by a spring-boot-starter-json
dependency. In this way you let Spring Boot take care of the correct Jackson version.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>