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

Spring Boot与Maven依赖版本维护原理探究(以Jackson为例)

Spring Boot 依赖版本维护原理:通过jackson-bom.version统一升级Jackson版本

我想要升级jackson-databind版本,在如下pom.xml配置中,未直接定义jackson-databind的版本,仅配置了jackson-bom.version为2.15.2,却成功将jackson-databind版本升级至2.15.2,甚至Spring关联的Jackson版本也同步升级。想了解Spring Boot实现这一依赖版本维护的原理。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.0</version>
</parent>

<properties>
    <jackson-bom.version>2.15.2</jackson-bom.version>
</properties>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>
</dependencies>

核心原理拆解

  • Spring Boot Starter Parent 的依赖管理基础
    spring-boot-starter-parent是一个预配置的父POM,它通过<dependencyManagement>节点集中管控了几乎所有常用第三方依赖的版本,其中就包含Jackson系列组件的版本规则。它内部默认引入了与当前Spring Boot版本适配的Jackson BOM。

  • 属性覆盖实现版本切换
    在spring-boot-starter-parent的POM中,已经预先定义了jackson-bom.version属性,用来指定引入的Jackson BOM版本。当你在自己的项目POM中重新赋值该属性时,会直接覆盖父POM的默认值,让项目加载你指定版本的Jackson BOM。

  • Jackson BOM的统一版本管控能力
    Jackson BOM本质是一个专门管理Jackson组件版本的POM,它在自身的<dependencyManagement>中声明了所有Jackson核心组件(如jackson-databind、jackson-core、jackson-annotations)的统一版本。项目引入该BOM后,所有直接或间接依赖的Jackson组件都会自动沿用BOM中定义的版本,无需在单个依赖中重复声明版本号。

  • 传递依赖的版本自动覆盖
    像spring-boot-starter-web这类starter会间接依赖Jackson组件,由于项目通过jackson-bom.version指定了更高版本的Jackson BOM,Maven在依赖解析时会优先采用BOM定义的版本,自动替换starter原本依赖的Jackson版本,最终实现所有关联Jackson组件的版本同步升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:54:56