news 2026/5/1 4:45:34

Spring Boot 4 全面拥抱 Jackson 3

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot 4 全面拥抱 Jackson 3

Spring Boot 4 将默认 JSON 库从Jackson 2切换到了Jackson 3

如果你是资深 Spring Boot 应用开发者,Jackson 一定不陌生,它是 Spring Boot 中Java 对象 ↔ JSON的事实标准。

Jackson 在 Spring Boot 4 中依赖结构大致是这样:

spring-boot-starter-jackson (4.x)├── tools.jackson.core:jackson-core:3.x ← Jackson 核心库└── com.fasterxml.jackson.annotation:jackson-annotations:2.x ← Jackson 注解

所以很多人在第一次查看项目依赖树时都会愣一下:

为什么项目里同时存在 Jackson 2 和 Jackson 3?

这是 Jackson 团队为了解决一个非常现实的问题:

整个 Java 生态不可能一夜之间全部迁移到 Jackson 3

他们的解决方案是:

核心实现迁移到新包名注解继续沿用旧包名

这意味着:

@JsonView@JsonFormat@JsonIgnore•......

这些你用烂了的注解完全不用改, 可以让多个项目在 Jackson 2 / 3 之间渐进式迁移。

这是一次非常工程化、也非常现实的设计。

Spring Boot 4 默认升级到 Jackson 3 后,并不是换个版本号这么简单。 下面这 4 个变化,每一个都可能在升级时踩坑。

1. 包名变了:从com.fasterxml.jacksontools.jackson

这是最直观、也是最容易编译报错的地方。

// Jackson 2import com.fasterxml.jackson.databind.ObjectMapper;// Jackson 3import tools.jackson.databind.ObjectMapper;

注意:

只有核心 API 换包名,注解依然在com.fasterxml.jackson.annotation

2.ObjectMapper退出舞台,JsonMapper成为主角

Jackson 2 的ObjectMapper可变的

​​​​​​​

ObjectMapper mapper = new ObjectMapper();mapper.enable(SerializationFeature.INDENT_OUTPUT);

这在多线程环境下其实并不安全。

Jackson 3 强制你使用Builder + Immutable(不可变)模式:

​​​​​​​

JsonMapper mapper = JsonMapper.builder().enable(SerializationFeature.INDENT_OUTPUT).disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).build();

一旦build()

•配置被锁死•可以安全共享•天然线程安全

这是 Jackson 3 非常重要的一次设计升级。

Jackson 3 直接创建的ObjectMapper只能得到默认配置,如果需要自定义配置,必须使用JsonMapper.builder()来创建不可变、线程安全的实例。

3. 日期序列化的默认值变了(非常容易踩坑)

版本

默认序列化

Jackson 2

时间戳

Jackson 3

ISO-8601 字符串

​​​​​​​

// Jackson 2{"nowDate": 1767588151648}// Jackson 3{"nowDate": "2026-01-05T02:02:31.648Z"}

这对前端更友好,但会导致:

•依赖时间戳断言的老测试用例失败•与时间格式强绑定的接口约定、Mock 数据需要同步调整

临时兼容方案:

​​​​​​​

spring:jackson:use-jackson2-defaults: true

该配置会让 Jackson 3 尽量保持 Jackson 2 的默认行为,适合在迁移初期使用。

4.Checked Exception终于被干掉了

这是很多 Java 开发者拍手叫好的改动。

Jackson 2:

​​​​​​​

try {objectMapper.readValue(json, MyClass.class);} catch (IOException e) {...}

Jackson 3:

jsonMapper.readValue(json, MyClass.class);

所有异常都继承自JacksonExceptionRuntimeException)。

最直接的好处是:

​​​​​​​​​​​​​​

// Jackson 2:lambda 直接崩list.stream().map(o -> objectMapper.writeValueAsString(o)).toList();// Jackson 3:完全没问题list.stream().map(o -> jsonMapper.writeValueAsString(o)).toList();

这是真正为现代 Java 写法服务的设计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 8:51:41

微信小程序开发框架全解析:成熟项目架构、主流技术与优劣对比

微信小程序凭借“无需下载、即开即用”的特性,成为企业轻量化获客、服务落地的核心载体。对于成熟的小程序项目,绝非简单堆砌页面与接口,而是有着标准化的框架结构和技术选型逻辑。本文将从“成熟项目框架结构”“主流技术框架选型”“各框架…

作者头像 李华
网站建设 2026/4/22 14:58:04

香港科技大学开发WebSeek:让网页数据分析像搭积木一样简单

你有没有这样的经历:想要比较不同网站的商品价格,或者需要从各个新闻网站收集信息来验证一条消息的真实性,结果发现自己在无数个浏览器标签页之间疲于奔命,还要不断地复制粘贴数据到Excel表格中?这种碎片化的工作方式不…

作者头像 李华
网站建设 2026/4/29 8:48:34

赫瑞-瓦特大学突破:AI实现想象与推理驱动的图像搜索

这项由赫瑞-瓦特大学BCML实验室主导的开创性研究发表于2026年迪拜举办的第26届国际万维网大会(WWW 26),论文编号为979-8-4007-2307-0/26/04,有兴趣深入了解的读者可以通过论文标识码10.1145/3774904.3792276查询完整论文。 在我们的数字生活中&#xff0…

作者头像 李华
网站建设 2026/4/23 12:42:19

CAM++能否检测录音伪造?防欺骗能力初探

CAM能否检测录音伪造?防欺骗能力初探 1. 这不是语音识别,而是声纹“身份证”验证 很多人第一眼看到CAM,会下意识以为它是个“语音转文字”工具——毕竟名字里带“CAM”,界面又长得像ASR系统。但其实,它干的是完全不同…

作者头像 李华
网站建设 2026/4/17 20:23:40

亲测好用!专科生毕业论文AI论文平台TOP10测评

亲测好用!专科生毕业论文AI论文平台TOP10测评 2026年专科生毕业论文AI平台测评维度解析 随着人工智能技术的不断进步,越来越多的专科生开始借助AI论文平台来提升毕业论文的写作效率和质量。然而,面对市场上琳琅满目的工具,如何选择…

作者头像 李华
网站建设 2026/3/7 15:15:18

MATLAB四房间走廊疏散模型设计与实现

MATLAB四房间走廊疏散模型设计与实现 1. 项目概述与需求分析 1.1 项目背景 本项目旨在将一个现有的单房间人员疏散模拟程序扩展为一个复杂的多房间环境,包含四个房间、一个连接走廊以及两个出口。该模拟将基于社会力模型或元胞自动机模型,用于研究人员在紧急情况下的疏散行…

作者头像 李华