Skip to content

Commit 8fdbf42

Browse files
committed
Jackson2ObjectMapperBuilder prefers Jackson 2.6 JavaTimeModule over JSR310Module
Issue: SPR-13212
1 parent 18c4671 commit 8fdbf42

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -674,17 +674,27 @@ private void registerWellKnownModulesIfAvailable(ObjectMapper objectMapper) {
674674
// jackson-datatype-jdk8 not available
675675
}
676676
}
677+
677678
// Java 8 java.time package present?
678679
if (ClassUtils.isPresent("java.time.LocalDate", this.moduleClassLoader)) {
679680
try {
680-
Class<? extends Module> jsr310Module = (Class<? extends Module>)
681-
ClassUtils.forName("com.fasterxml.jackson.datatype.jsr310.JSR310Module", this.moduleClassLoader);
682-
objectMapper.registerModule(BeanUtils.instantiate(jsr310Module));
681+
Class<? extends Module> javaTimeModule = (Class<? extends Module>)
682+
ClassUtils.forName("com.fasterxml.jackson.datatype.jsr310.JavaTimeModule", this.moduleClassLoader);
683+
objectMapper.registerModule(BeanUtils.instantiate(javaTimeModule));
683684
}
684685
catch (ClassNotFoundException ex) {
685-
// jackson-datatype-jsr310 not available
686+
// jackson-datatype-jsr310 not available or older than 2.6
687+
try {
688+
Class<? extends Module> jsr310Module = (Class<? extends Module>)
689+
ClassUtils.forName("com.fasterxml.jackson.datatype.jsr310.JSR310Module", this.moduleClassLoader);
690+
objectMapper.registerModule(BeanUtils.instantiate(jsr310Module));
691+
}
692+
catch (ClassNotFoundException ex2) {
693+
// OK, jackson-datatype-jsr310 not available at all...
694+
}
686695
}
687696
}
697+
688698
// Joda-Time present?
689699
if (ClassUtils.isPresent("org.joda.time.LocalDate", this.moduleClassLoader)) {
690700
try {

0 commit comments

Comments
 (0)