You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot从2.4.x升级至2.5.x后Jackson模块未注册LocalDate反序列化报错

Spring Boot 2.5.x 升级后LocalDate序列化报错根因分析

你遇到的报错是Spring Boot 2.5.x版本依赖的Jackson基线版本升级+自动配置逻辑调整共同导致的,具体原因如下:

报错原文:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDate` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

核心变更点

  • Spring Boot 2.5.x将Jackson的基线版本从2.4.x对应的2.11.x升级到了2.12.x,Jackson 2.12版本开始移除了对Java 8时间类型的默认内置支持,必须显式注册jackson-datatype-jsr310模块才能正常序列化/反序列化LocalDate、LocalDateTime等java.time包下的类型。
  • Spring Boot 2.5.x调整了Jackson自动配置的模块注册逻辑:只有Spring容器自动管理的ObjectMapper实例,才会默认扫描类路径下的Jackson模块并完成自动注册。

常见触发场景

  • 代码中直接手动实例化ObjectMapper(比如ObjectMapper mapper = new ObjectMapper();),而非注入Spring自动配置的ObjectMapper实例:手动创建的实例不会触发Spring的模块自动注册逻辑,在Jackson 2.12版本下就会报错。
  • 自定义ObjectMapper Bean时没有使用Jackson2ObjectMapperBuilder构建:如果你通过@Bean注解手动声明了ObjectMapper实例,但是直接返回new ObjectMapper()而非用Spring提供的Builder构建,也会跳过自动注册模块的逻辑。
  • 依赖冲突:第三方依赖强制引入了低版本的Jackson核心包,导致Spring Boot管理的jackson-datatype-jsr310模块版本和核心包版本不匹配,无法被正常加载注册。

对应解决方案

  • 优先使用Spring注入的ObjectMapper实例,不要手动new
  • 如果需要自定义ObjectMapper,使用Jackson2ObjectMapperBuilder来构建:
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    return builder.build();
    // 如果有自定义配置,可以在build前调整参数
}
  • 排查依赖冲突,执行mvn dependency:tree(Maven)或gradlew dependencies(Gradle)检查Jackson相关包的版本,统一使用Spring Boot管理的版本,不要单独指定Jackson版本号。

内容的提问来源于stack exchange,提问作者Miguel Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:06:03