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

spring-web/spring-webmvc 5.3.37漏洞能否修复?迁移遇兼容问题求助

Spring Boot 2.7.x 迁移中Spring Web升级兼容问题解决方案

核心问题根源

Spring Framework 6.0.x 是Spring Boot 3.x专属依赖,完全基于Jakarta EE规范(替代原Java EE的javax包),而Spring Boot 2.7.x 底层依赖的是Spring Framework 5.3.x,仍使用javax规范,跨版本直接升级到6.0.22必然触发javax与jakarta的兼容冲突。

可行解决方案

方案1:修复漏洞且保持版本兼容(推荐)

  • 放弃直接升级到Spring Framework 6.0.x,转而升级Spring Framework 5.3.x系列的最新安全补丁版本(比如5.3.39及以后的同分支版本),该分支仍维护安全更新,且完全适配Spring Boot 2.7.x,不会出现javax/jakarta冲突。
  • 在pom.xml(或build.gradle)中锁定spring-web和spring-webmvc的版本为5.3.x的安全补丁版:
    <!-- Maven示例 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.39</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.39</version>
    </dependency>
    
  • 执行mvn dependency:tree(或gradle dependencies)确认依赖树中无javax/jakarta冲突。

方案2:强制适配Spring Framework 6.0.x(不推荐,成本极高)

若执意要升级到6.0.22,需完成全栈javax到jakarta的迁移:

  • 替换Spring Web starter:用spring-boot-starter-web-jakarta替代原spring-boot-starter-web
  • 全局替换代码导入:将所有javax.servlet.*、javax.validation.*等导入替换为jakarta.servlet.*、jakarta.validation.*
  • 排除所有依赖中的javax相关包,强制引入jakarta规范依赖:
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
    
  • 检查所有第三方依赖(如MyBatis、Shiro、Redis客户端等),替换为支持Jakarta规范的版本,否则会出现类加载冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:49:53