跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

若依框架从 Spring Boot 2 升级到 Spring Boot 3 实战

综述由AI生成详细阐述了若依框架从 Spring Boot 2 升级至 Spring Boot 3 的全过程。主要步骤包括:确认 JDK 17+ 环境,备份代码;更新 Maven 依赖,将父工程及核心模块调整为适配 Spring Boot 3 的版本,并处理 javax 到 jakarta 包的迁移;修改配置文件以适配新特性;重构 Spring Security 配置以兼容 Security 6.x;最后通过编译、启动及核心功能测试以确保升级成功。

古灵精怪发布于 2026/3/27更新于 2026/5/2825 浏览
若依框架从 Spring Boot 2 升级到 Spring Boot 3 实战

若依框架从 Spring Boot 2 升级到 Spring Boot 3

一、升级前准备

  1. 确认若依版本:优先选择若依官方已适配 Spring Boot 3 的版本(如 RuoYi v4.7.0+ 有适配分支),若使用自定义改造版本,需逐一处理兼容性问题。
  2. 环境要求:Spring Boot 3 要求 JDK 17+(放弃 JDK 8/11 支持),需先升级本地 / 服务器 JDK 到 17 及以上。
  3. 备份代码:升级前完整备份项目代码,避免升级过程中代码丢失。

二、核心升级步骤

1. 升级 Maven/Gradle 依赖

核心是修改 pom.xml(Maven)或 build.gradle(Gradle)中的依赖版本,以下以 Maven 为例:

(1)修改父依赖为 Spring Boot 3
<!-- 原 Spring Boot 2 依赖 -->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.7.12</version>
  <relativePath/>
</parent>
<!-- 升级为 Spring Boot 3.x(推荐 3.2.x 稳定版) -->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>3.2.3</version>
  <relativePath/>
</parent>
(2)升级 Spring Cloud 依赖(若使用微服务版本)

Spring Boot 3 对应 Spring Cloud 2022.x 及以上版本(不再使用 Finchley/Greenwich 等版本号,改为年份命名):

<!-- Spring Cloud 版本管理 -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>2022.0.4</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
(3)升级若依核心依赖

若依核心依赖需适配 Spring Boot 3,建议使用官方适配版本:

<!-- 若依核心依赖(以单体版为例) -->
<dependency>
  <groupId>com.ruoyi</groupId>
  <artifactId>ruoyi-common</artifactId>
  <version>4.8.0</version> <!-- 4.8.0+ 适配 Spring Boot 3 -->
</dependency>
(4)替换不兼容依赖
  • Spring Boot 3 移除了 javax.* 包,替换为 jakarta.*(核心变更):
<!-- 原 JAXB 依赖(javax) -->
<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
</dependency>
<!-- 替换为 jakarta 版本 -->
<dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>4.0.1</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>4.0.2</version>
  <scope>runtime</scope>
</dependency>

校验相关依赖(如 Hibernate Validator):

<!-- Spring Boot 3 中 validator 已适配 jakarta -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 修改配置文件

(1)移除 / 替换过时配置

Spring Boot 3 废弃了部分配置项,需调整 application.yml/application.properties:

  • 原 server.servlet.context-path 改为 server.servlet.context-path(无变化,但需检查其他配置);
  • 数据源配置无核心变化,但需确保数据库驱动适配 JDK 17(如 MySQL 驱动升级到 8.0.30+):
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root
(2)调整日志配置(可选)

Spring Boot 3 对日志框架的适配无大变化,但需确保 logback.xml 中无 javax.* 相关引用。

3. 代码层面兼容修改

(1)替换 javax 为 jakarta 导入

项目中所有 import javax.xxx 需替换为 import jakarta.xxx,核心场景:

// 原导入
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.annotation.PostConstruct;

// 替换为
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import jakarta.annotation.PostConstruct;

Servlet 相关:HttpServletRequest、HttpServletResponse 等(若直接导入):

// 原导入
import javax.servlet.http.HttpServletRequest;

// 替换为
import jakarta.servlet.http.HttpServletRequest;
(2)调整 Spring Security 配置(关键)

Spring Boot 3 对应 Spring Security 6.x,若依的权限模块需适配:

// 原配置方式(Spring Boot 2)
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 权限配置
    }
}

// 升级后(Spring Boot 3/Security 6)
@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/login", "/captcha").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginProcessingUrl("/login")
                .successHandler(authenticationSuccessHandler)
                .failureHandler(authenticationFailureHandler)
            )
            .logout(logout -> logout
                .logoutUrl("/logout")
                .logoutSuccessHandler(logoutSuccessHandler)
            )
            .csrf(csrf -> csrf.disable()); // 若依默认关闭 CSRF,需适配新写法
        return http.build();
    }
}
(3)其他兼容调整
  • 若使用 Redis,Spring Data Redis 3.x 无核心 API 变化,但需确保序列化方式兼容;
  • 若依的定时任务、代码生成器等模块,需检查是否有 javax 相关引用,逐一替换。

三、测试验证

  1. 编译项目:执行 mvn clean compile,修复所有编译错误(主要是依赖缺失、导入错误);
  2. 启动项目:检查启动日志,修复 Bean 初始化失败、配置加载异常等问题;
  3. 功能测试:验证登录、菜单、权限、数据 CRUD 等核心功能是否正常;
  4. 兼容性测试:验证第三方集成(如 OSS、短信、支付)是否适配 JDK 17 + Spring Boot 3。

四、总结

  • 核心前提:升级 JDK 到 17+,替换所有 javax.* 依赖为 jakarta.*;
  • 关键步骤:升级 Spring Boot 3 父依赖、适配 Spring Security 6 配置、替换代码中 javax 导入;
  • 验证重点:编译无错误、启动无异常、核心功能正常,是升级成功的核心标准。

目录

  1. 若依框架从 Spring Boot 2 升级到 Spring Boot 3
  2. 一、升级前准备
  3. 二、核心升级步骤
  4. 1. 升级 Maven/Gradle 依赖
  5. (1)修改父依赖为 Spring Boot 3
  6. (2)升级 Spring Cloud 依赖(若使用微服务版本)
  7. (3)升级若依核心依赖
  8. (4)替换不兼容依赖
  9. 2. 修改配置文件
  10. (1)移除 / 替换过时配置
  11. (2)调整日志配置(可选)
  12. 3. 代码层面兼容修改
  13. (1)替换 javax 为 jakarta 导入
  14. (2)调整 Spring Security 配置(关键)
  15. (3)其他兼容调整
  16. 三、测试验证
  17. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ComfyUI:AI 绘画与图像生成的高效工作流
  • 全球 10 大顶尖大模型团队人才分析:167 位华人入选
  • 使用 LLaMA-Factory 微调 Qwen3 模型流程与评估
  • AI 原理、模型演进与代码实践详解
  • Stable Diffusion 3 Medium 开源发布:文本生成图像技术升级
  • 基于深度学习的 Python 音频特征提取与分类实战
  • Python 爬虫实战:反爬攻防逻辑与分级解决方案
  • 网络安全工作者的黑客精神与行业生态价值
  • Neo4j 插件 APOC 安装及配置指南
  • 中小团队基于 Ubuntu 的 DooTask 项目管理系统私有化部署实战
  • 十大车企借助大模型革新汽车产业实践案例
  • AI 大模型:提示工程的核心概念与实战技巧
  • 2023 年主流编程语言就业前景分析与学习指南
  • Faster Whisper v1.7 日语视频本地 SRT 字幕生成教程(含 AMD 显卡支持)
  • AstrBot+NapCat 一键部署智能 QQ 机器人及 cpolar 公网访问
  • VSCode 关闭 Copilot 代码补全操作指南
  • 飞算 Java AI 安装与项目生成实战指南
  • 量子计算驱动的 Python 医疗诊断编程:变分量子分类器详解
  • 基于Python的新疆特产推荐系统设计与实现
  • C++ 智能指针原理、使用场景与避坑指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online