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

Spring Boot依赖疑问:升级starter-web为何未更新spring-webmvc?

解决Spring Boot依赖升级后spring-webmvc版本未更新的问题

问题原因

你遇到的核心问题是Maven依赖管理的优先级规则:spring-boot-starter-parent本质是一个BOM(物料清单),它的<dependencyManagement>节点中预定义了所有Spring Boot生态依赖的版本。你的父依赖用的是2.7.10(对应Spring Framework 5.3.x系列),即便你单独将spring-boot-starter-web升级到3.0.5,Maven仍会优先采用父依赖中定义的spring-webmvc 5.3.20版本,因为BOM的版本声明优先级高于直接依赖的传递版本。

正确解决方案

根据你的需求,推荐两种规范的解决方式,优先选择第一种:

1. 统一升级Spring Boot父依赖版本

Spring Boot的starter与核心框架版本是严格绑定的(3.x对应Spring Framework 6.x,2.x对应5.x),跨版本混用starter和父依赖会导致兼容性风险。直接将父依赖版本升级到3.0.5,所有相关依赖会自动对齐到匹配版本,这是最稳妥的方式:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
    <relativePath/> <!-- 从仓库查找父依赖 -->
</parent>

<!-- 无需再指定spring-boot-starter-web的版本,父依赖已管理 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

注意:Spring Boot 3.x要求JDK 17及以上版本,需要确保你的项目运行环境符合要求。

2. 通过dependencyManagement覆盖版本(不推荐跨版本混用)

如果暂时无法升级整个Spring Boot版本,可在项目的<dependencyManagement>中显式声明spring-webmvc的目标版本,强制Maven使用该版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.7</version>
        </dependency>
    </dependencies>
</dependencyManagement>

⚠️ 注意:Spring Framework 6.x与Spring Boot 2.7.x存在API兼容性差异,且Spring 6要求JDK 17+,这种跨版本混用可能引发潜在问题,仅作为临时过渡方案。

关于你当前的解决方式

你直接显式添加spring-webmvc依赖的方式虽然能生效,但并非最优实践:显式依赖会打破Spring Boot的版本管理体系,后续如果有其他依赖传递引入spring-webmvc,可能引发版本冲突,维护成本更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:05:06