SpringBoot3.3.5全栈升级与框架适配总结(技术分享版)

:2026年04月11日

适配环境:Spring Boot 3.3.5 + JDK 17 + MySQL 8.0.12 + Redis 6.2.6

一、升级背景与必要性

(一)项目基础信息

本项目属于 Java Spring Boot + Python AI 全栈项目。项目包含风险预测、权限管理、数据上传、故障报修、数据可视化等核心能力,面向医疗场景提供轻量化筛查工具。

架构:标准分层com.cucn.springboot

  • controller / service / mapper / config / entity
  • 运行端口:9090
  • 数据库:MySQL 8.0.12
  • 缓存:Redis 6.2.6
  • 文件存储:files/、upload/
  • AI 模块:.h5 模型 + .pkl 标准化器

本项目属于Java Spring Boot + Python AI全栈项目。项目核心功能涵盖疾病风险预测、多角色用户权限管理、诊疗数据上传与解析、运维故障报修、数据可视化报表展示等,致力于为医疗场景提供便捷、高效的疾病风险筛查工具。

项目采用标准分层架构,包结构为com.cucn.springboot,包含controller(控制层)、service(业务层)、mapper(数据访问层)、config(配置层)、entity(实体层)等核心模块;运行端口固定为9090,数据库采用MySQL 8.0.12(库名:dongfang),搭配Redis 6.2.6实现缓存优化,采用本地文件存储(files/、upload/目录)处理上传的CSV数据集与模型文件;AI模块基于Python语言开发,依托.h5模型文件、.pkl标准化器/编码器,实现CSV数据集的糖尿病风险预测功能。

(二)升级必要性

  • Spring Boot 2.x 停止官方维护,存在安全漏洞
  • Jakarta EE 全面替代 Java EE,javax包彻底废弃
  • 旧框架启动报错、依赖冲突、接口文档失效
  • 提升长期可维护性与开发效率

1. 框架生命周期考量:旧版本采用的Spring Boot 2.x系列已正式停止官方维护,存在未修复的安全漏洞与兼容性隐患,无法满足项目长期可维护、高稳定性的要求。

2. 技术规范适配要求:Jakarta EE已全面替代传统Java EE规范,旧框架中依赖的javax包已被官方废弃,若不升级,将导致项目无法适配现代Java开发标准,且可能出现核心类找不到、接口调用失败等问题。

3. 核心功能稳定保障:项目核心的AI预测模块、文件上传下载、数据库交互等功能,在旧框架环境下已出现启动报错、功能异常等隐患,升级框架是解决此类问题、保障功能正常运行的关键。

4. 开发与维护效率优化:旧框架存在依赖冲突、接口文档失效、编译报错等问题,占用大量开发与排查时间,升级后可实现依赖结构清晰化、开发流程规范化,提升后续迭代与维护效率。

二、核心升级内容

(一)基础环境升级

本次升级围绕Spring Boot 3.3.5生态适配展开,对项目基础运行环境进行全面升级,确保各组件版本兼容、运行稳定,具体升级明细如下表所示:

组件名称

旧版本

升级后版本

适配说明

Spring Boot

2.x

3.3.5

官方LTS稳定版,强制要求JDK 17及以上版本,适配Jakarta EE规范

JDK

8

17

Spring Boot 3系列最低兼容版本,长期支持,无安全漏洞,性能更优

Maven

3.6+

3.8+

适配Spring Boot 3依赖加载规则,解决旧版本依赖下载慢、冲突排查难问题

MySQL驱动

mysql-connector-java

mysql-connector-j

Spring Boot 3官方推荐驱动,适配MySQL 8.0+版本,提升数据库连接稳定性

MyBatis Plus

3.5.8

3.5.9(Spring Boot 3专属)

修复旧版本与Spring Boot 3.3.5不兼容的Bean定义冲突BUG,优化分页插件性能

(二)框架与依赖调整

结合Spring Boot 3.3.5的规范要求,对项目依赖进行全面梳理,移除不兼容依赖、补充必要依赖、优化依赖结构,确保依赖无冲突、无冗余,具体调整如下:

1. MyBatis Plus专属适配:将旧版本的mybatis-plus-boot-starter替换为Spring Boot 3专属的mybatis-plus-spring-boot3-starter:3.5.9,新增mybatis-plus-jsqlparser:3.5.9依赖(分页插件必需,用于SQL解析),彻底移除原生mybatis-spring-boot-starter依赖,避免出现依赖冲突。

2. 接口文档迁移:旧版本采用的springfox-swagger2、knife4j依赖不兼容Jakarta EE规范,无法在Spring Boot 3环境下正常运行,故全部移除;新增springdoc-openapi-starter-webmvc-ui:2.2.0依赖,适配OpenAPI 3标准,实现接口文档自动生成、在线调试功能。

3. Jakarta EE基础包补充:为满足Spring Boot 3底层运行要求,补充jakarta.servlet-api、jakarta.annotation-api:2.1.1依赖,确保项目符合Jakarta EE 9+规范,解决核心类找不到的问题。

4. 兼容依赖保留:保留项目原有稳定依赖,包括Spring Boot Web、Redis、JWT(0.11.5+版本,适配Jakarta EE)、Hutool工具库、EasyExcel等,确保业务功能不受影响;Python AI模块相关依赖无侵入式兼容,无需修改任何代码即可正常运行。

  • MP 替换为mybatis-plus-spring-boot3-starter
  • Swagger → SpringDoc OpenAPI 3
  • 补充jakarta基础包
  • 保留兼容依赖:Web、Redis、JWT、Hutool、EasyExcel

(三)代码与配置优化

为适配Spring Boot 3.3.5框架规范,解决升级过程中的代码报错问题,对项目代码与配置进行统一优化,确保代码规范、配置合理,具体优化内容如下:

1. 包名全局替换:由于Jakarta EE规范替代Java EE,对项目中所有涉及javax包的代码进行全局替换,将javax.servlet替换为jakarta.servlet、javax.validation替换为jakarta.validation,同时清理所有Swagger2遗留注解(如@ApiModel、@ApiModelProperty),避免注解冲突。

2. Mapper注入统一规范:在项目启动类上添加@MapperScan("com.cucn.springboot.mapper")注解,统一扫描数据访问层接口,移除所有Mapper接口上零散的@Mapper注解,避免出现重复注入导致的Bean定义异常(如diabetesRecordMapper注入失败)。

3. 分页插件配置修正:完善MyBatis Plus分页插件配置,显式指定数据库类型为MySQL,确保分页SQL自动拼接LIMIT语句,解决分页功能失效问题,具体配置代码如下:

MyBatis Plus 分页插件配置(高亮优化)
/**
 * MyBatis Plus 分页配置(SpringBoot3专用)
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 指定MySQL方言
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

@Configuration public class MybatisPlusConfig { /** * 分页插件配置,适配MySQL数据库 */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }

4. Maven编译配置修正:在pom.xml文件中强制指定Java编译版本为17,解决Maven编译时出现的“不支持发行版本23”报错,确保编译过程顺利,具体配置如下:

Maven 编译版本指定(JDK17 强制指定)
<properties>
    <!-- SpringBoot3 必须指定JDK17编译 -->
    <java.version>17</java.version>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.release>17</maven.compiler.release>
</properties>

<properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <maven.compiler.release>17</maven.compiler.release> </properties>

三、实战问题排查与解决

本次升级过程中,遇到了一系列框架适配、依赖冲突、编译报错等问题,通过逐一排查、针对性解决,最终实现项目正常启动与运行。现将核心问题、原因及解决方案整理如下,为后续类似升级提供参考:

报错类型

核心报错信息

问题原因

解决方案

类找不到异常

javax.servlet.http.HttpServletRequest not present

旧Java EE的javax包已被Jakarta EE废弃,Spring Boot 3不支持

全局替换项目中所有javax包为jakarta包,补充Jakarta EE基础依赖

Bean定义异常

Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

项目使用了非 Spring Boot 3 专用的 mybatis-plus-boot-starter,导致 Bean 定义类型冲突。

升级MyBatis Plus为Spring Boot 3专属版本3.5.9,替换对应依赖

分页插件报错

找不到符号:类PaginationInnerInterceptor

MyBatis Plus 3.5.9拆分了模块,分页插件依赖jsqlparser解析器,未单独引入

新增mybatis-plus-jsqlparser:3.5.9依赖,完善分页插件配置

编译版本错误

Fatal error compiling: 错误: 不支持发行版本 23

Maven编译版本配置为23,与本地安装的JDK 17不匹配,且Spring Boot 3不支持JDK 23

在pom.xml中强制指定编译版本为JDK 17,同步调整IDEA项目JDK配置

接口文档失效

Swagger启动失败,无法访问接口文档页面

旧版Springfox Swagger不兼容Jakarta EE与Spring Boot 3

移除旧Swagger依赖,替换为SpringDoc OpenAPI 3,适配新版框架

注:所有问题均已彻底解决,解决方案经过实际验证,可直接应用于同类Spring Boot 3升级场景。

四、升级验证结果

升级完成后,对项目进行全维度验证,涵盖编译、启动、功能、兼容性等方面,确保项目运行稳定,具体验证结果如下:

(一)编译与启动指标

1. Maven编译:项目共76个源码文件,全部编译成功,无报错、无警告,编译过程流畅,无依赖冲突;

2. 项目启动:在Windows环境下,项目可在15秒内完成启动,较旧版本(22秒)启动速度提升约32%,启动日志无异常;

3. 运行状态:项目启动后,端口9090正常监听,控制台可正常打印Spring Boot 3.3.5、MyBatis Plus 3.5.9版本信息,核心Bean加载成功;

4. 依赖状态:所有依赖加载正常,无冗余、无冲突,Maven构建稳定,可重复编译、启动。

  • 源码 76 个文件 → 全量编译成功
  • 启动耗时:15 秒(原 22 秒 → 提升 32%
  • 端口 9090 正常监听
  • 依赖无冲突、无冗余

(二)核心功能全量验证

对项目所有核心功能进行全量测试,确保升级后功能无异常、运行稳定,具体验证结果如下表所示:

功能模块

验证状态

详细验证结果

用户登录/权限管理

验证通过

管理员、普通用户、运维人员三角色登录正常,权限分配合理,无越权访问问题

数据库CRUD操作

验证通过

MySQL数据库连接稳定,数据新增、查询、修改、删除操作正常,事务机制生效

MyBatis Plus分页

验证通过

分页插件正常工作,可自动拼接LIMIT SQL,分页参数设置有效,分页结果准确

AI糖尿病预测

验证通过

Python脚本、.h5模型文件、.pkl标准化器调用正常,CSV数据集导入预测结果准确

文件上传/下载

验证通过

本地files、upload目录读写权限正常,CSV文件、模型文件上传、下载功能无异常

CSV数据集处理

验证通过

训练集、测试集导入正常,数据解析无误,可正常用于AI模型训练与预测

接口文档

验证通过

访问http://localhost:9090/swagger-ui/index.html可正常打开接口文档,支持在线调试

Redis缓存

验证通过

Redis配置加载正常,缓存读写、失效机制正常,有效提升项目响应速度

运维报修/消息

验证通过

运维报修流程完整,消息通知正常,无逻辑异常,可满足日常运维需求

(三)兼容性验证

对项目运行环境进行多维度兼容性测试,确保项目在不同场景下均可正常运行,具体验证结果如下:

1. JDK兼容性:完全兼容JDK 17,运行无异常,不支持JDK 8及以下版本(符合Spring Boot 3要求);

2. 操作系统兼容性:在Windows 10/11操作系统下正常运行,无环境适配问题;

3. 数据库兼容性:兼容MySQL 8.0.12及以上版本,数据交互无异常;

4. AI模块兼容性:Python AI模块无侵入式适配,无需修改任何Python代码,可正常调用。

五、升级价值与提升

本次全栈升级不仅解决了旧框架存在的各类问题,还显著提升了项目的技术规范性、稳定性与开发效率,具体价值与提升如下:

  • 技术规范:全面适配 Jakarta EE 9+
  • 稳定性:消除 5 项启动 / 编译级报错
  • 安全性:修复 SB2.x 官方漏洞
  • 效率:启动提速 32%,接口文档自动生成
  • 竞争力:前后端 + AI 完整栈,无技术债务

(一)技术规范提升

项目全面适配Jakarta EE 9+开发规范,彻底摒弃废弃的javax包,代码结构更规范、更符合现代Java开发标准;依赖结构经过梳理优化,无冲突、无冗余,Maven构建流程稳定,便于后续团队协作开发与二次迭代。

(二)稳定性与安全性提升

消除了Spring Boot 2.x已知的安全漏洞,解决了5项启动、编译级核心报错,项目运行稳定性大幅提升;框架生态完整,依赖版本统一,减少了因版本兼容问题导致的功能异常,保障项目长期稳定运行。

(三)技术竞争力提升

采用Spring Boot 3.3.5官方最新稳定框架,技术选型先进、规范,项目具备完整的前后端+AI能力,无技术债务,可满足实际生产与开发需求,提升项目的技术实用性与可扩展性。

(四)开发效率提升

SpringDoc OpenAPI接口文档自动生成,无需手动编写,调试更便捷;依赖版本统一,减少了依赖冲突排查时间;项目启动速度提升32%,开发迭代效率显著提高,为后续功能优化、bug修复节省了大量时间。

六、后续维护建议

为确保项目长期稳定运行、满足后续迭代需求,结合项目实际情况,提出以下后续维护建议:

  • 定期升级小版本,不盲目升大版本
  • AI 模型文件(.h5/.pkl)加入.gitignore
  • 生产环境建议使用云存储 OSS
  • 长期使用 JDK17,不追新过高版本
  • 代码生成器注意:mp-generator 3.5.9 与 SB3 存在兼容风险
  • 定期清理冗余代码,规范注释

1. 依赖维护:定期关注Spring Boot、MyBatis Plus、SpringDoc等核心依赖的版本更新,优先升级小版本(修复bug、提升性能),避免盲目升级大版本,防止出现兼容性问题。

2. AI模块管理:AI模型文件(.h5、.pkl)体积较大,且无需参与代码版本控制,建议按.gitignore规则配置,不提交至Git仓库,避免占用仓库空间、影响代码提交速度。

3. 文件存储优化:当前项目采用本地文件存储,适合开发场景;若后续部署至生产环境,建议将files/目录替换为云存储服务(如阿里云OSS),提升文件存储安全性与可访问性。

4. JDK版本管理:长期使用JDK 17,不盲目升级至JDK 21、23等非长期支持版本,确保项目运行稳定性,避免因JDK版本过高导致的兼容性问题。

5. 代码维护:定期梳理项目代码,优化代码结构,删除冗余代码;规范注释编写,确保代码可读性,便于后续团队维护与代码讲解。

6. 代码生成器兼容提醒:mybatis-plus-generator:3.5.9 与 Spring Boot 3 存在不完全兼容(依赖 velocity 1.7),虽本次启动未触发该问题,但后续使用代码生成器时需重点关注,避免出现兼容性报错。

七、总结

本次升级以Spring Boot 3.3.5为核心,完成环境升级、依赖替换、代码迁移、问题修复,成功解决包名迁移、依赖冲突、Bean 异常、编译错误、文档失效五大类问题。

项目实现编译成功、启动无报错、功能全覆盖、AI 正常运行,技术栈规范、稳定、可长期维护,可为同类 Spring Boot 3 升级项目提供完整参考方案。

本次糖尿病智能预测系统全栈升级,以Spring Boot 3.3.5生态适配为核心目标,完成了基础环境升级、依赖调整、代码与配置优化,成功解决了包名迁移、依赖冲突、Bean定义异常、编译版本错误、接口文档失效等5项核心问题。

升级后,项目实现了Maven编译成功、启动无报错、核心功能全覆盖、AI预测模块正常运行的目标,技术规范性、稳定性、开发效率均得到显著提升,完全满足实际开发与长期使用需求。

本次升级不仅解决了旧框架的各类隐患,还为项目后续的功能迭代、性能优化奠定了坚实的技术基础,可为同类Spring Boot 3升级项目提供参考与借鉴。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐