Files
his/openhis-server-new/SPRINGBOOT_4_UPGRADE_ANALYSIS.md
华佗 554e20f276 feat: Spring Boot 3.5.14 → 4.0.6 升级
核心升级:
- Spring Boot 3.5.14 → 4.0.6
- Spring Framework 6.2.18 → 7.0.7
- Spring Security 6.5.10 → 7.0.5
- Flyway 11.7.2 → 11.14.1

Breaking Changes 适配:
- starter-aop → starter-aspectj (SB4 重命名)
- JDBC/Flyway/Jackson 自动配置拆分到独立模块
- DaoAuthenticationProvider 构造函数变更 (Spring Security 7.0)
- DataSourceProperties 包路径迁移

依赖调整:
- Druid boot3-starter → druid core (手动配置, 避免 SB4 不兼容)
- 新增 spring-boot-starter-quartz
- 新增 spring-boot-starter-cache
- 新增 spring-boot-flyway / spring-boot-jdbc
- PostgreSQL 42.7.4 → 42.7.10

验证: 26/26 测试通过, 1374 API端点正常
2026-06-05 08:43:30 +08:00

6.4 KiB
Raw Blame History

Spring Boot 4.0 升级分析报告

📅 分析日期: 2026-06-04
📌 当前版本: Spring Boot 3.5.14
🎯 目标版本: Spring Boot 4.0.6 (最新稳定版)
⚠️ 风险等级: 🔴 高 (存在关键组件不兼容)


1. 版本对比总览

组件 当前 (SB 3.5.14) 目标 (SB 4.0.6) 变化
Spring Boot 3.5.14 4.0.6 大版本跳跃
Spring Framework 6.2.18 7.0.7 大版本跳跃
Spring Security 6.5.10 7.0.5 大版本跳跃
Java 17+ 17+ 不变
Tomcat 10.1.54 11.0.21 大版本跳跃
Hibernate 6.6.x 7.2.12 大版本跳跃
Flyway 11.7.2 11.14.1 小版本升级
Kotlin 2.0.x 2.2.21 小版本升级
Jackson 2 2.21.2 2.21.2 不变
Jackson 3 3.1.2 🆕 新增
Quartz 2.5.2 2.5.2 不变
PostgreSQL 42.7.4 42.7.10 补丁升级

2. 🔴 关键阻塞项 (必须解决才能升级)

2.1 MyBatis Plus — 没有 Spring Boot 4 Starter

项目 状态
mybatis-plus-spring-boot4-starter 不存在
mybatis-plus-spring-boot3-starter 最新版 3.5.16 (仅支持 SB 3.x)
mybatis-plus-boot-starter 最新版 3.5.7 (SB 2.x)

影响: MyBatis Plus 是项目核心 ORM没有 Boot 4 Starter 意味着:

  • 自动配置可能不兼容 Spring Framework 7.x
  • Bean 注册方式可能变化
  • 需要手动配置或等待官方适配

可能方案:

  1. 等待官方发布 — MyBatis Plus 通常在 Spring Boot 大版本发布后 3-6 个月适配
  2. 🔧 手动适配 — 基于 mybatis-plus-spring-boot3-starter 修改自动配置类
  3. 🔄 降级使用 — 使用 mybatis-plus-core + 手动配置(工作量大)

2.2 Druid — 没有 Spring Boot 4 Starter

项目 状态
druid-spring-boot4-starter 不存在
druid-spring-boot-3-starter 最新版 1.2.25
Druid 核心版 1.2.25

影响: Druid 数据源自动配置和监控功能可能不兼容。

可能方案:

  1. 🔧 手动配置 DruidDataSource — 绕过 Spring Boot 自动配置
  2. 🔄 替换为 HikariCP — Spring Boot 4 默认连接池(已内置)

2.3 Flowable — 需要验证

项目 状态
flowable-engine 最新版 8.0.0
当前使用 7.1.0
Spring Framework 7 兼容性 ⚠️ 未确认

影响: Flowable 8.0.0 可能适配了 Spring Framework 7但需要验证。


3. 🟡 中等风险项

3.1 Jackson 3 引入

Spring Boot 4 同时支持 Jackson 2 和 Jackson 3

  • 项目使用 fastjson2 作为 JSON 库
  • Jackson 3 可能与 fastjson2 的 Kotlin 扩展产生新的冲突
  • 需要验证 springdoc-openapi 对 Jackson 3 的支持

3.2 Tomcat 11.x

  • Tomcat 11 基于 Servlet 6.1 (Jakarta EE 11)
  • 项目已迁移到 jakarta.servlet,理论上兼容
  • 需要验证自定义 Filter/Servlet 的兼容性

3.3 Spring Security 7.0

  • 可能有 API 变更(已在 3.5 中适配了大部分)
  • 需要检查 @EnableMethodSecurity 等注解是否有变化

3.4 Hibernate 7.2

  • 项目使用 JPA 相关功能较少(主要是 MyBatis Plus
  • 风险较低

4. 🟢 低风险项

组件 当前 SB 4 管理 备注
Springdoc 2.8.6 不管理 需要单独验证兼容性
LiteFlow 2.12.4.1 不管理 需要验证 Spring Framework 7 兼容性
pagehelper 2.1.1 不管理 需要验证
Lombok 1.18.34 不管理 低风险
PostgreSQL Driver 42.7.4 42.7.10 安全升级

5. 升级路径建议

方案 A: 等待生态成熟 (推荐 )

时间线: 2026 Q4 - 2027 Q1

阶段 时间 动作
等待 现在 ~ 2026 Q3 监控 MyBatis Plus / Druid / Flowable 的 Boot 4 适配进度
评估 2026 Q3 确认关键组件适配状态
升级 2026 Q4 执行升级
测试 2026 Q4 ~ 2027 Q1 全面回归测试

优点: 风险最低,依赖组件有官方支持
缺点: 滞后于 Spring Boot 4 的新特性

方案 B: 激进升级 (不推荐)

时间线: 立即

阶段 时间 动作
准备 1-2 周 fork MyBatis Plus / Druid 源码,手动适配 Boot 4
升级 1 周 修改 POM + 代码适配
测试 2-4 周 全面回归测试
维护 持续 手动维护 fork 版本

优点: 最早享受 Spring Boot 4 新特性
缺点: 维护成本极高,上游变更需要手动同步

方案 C: 渐进升级 (折中方案)

时间线: 2026 Q3

  1. Phase 1: 先升级到 Spring Boot 3.5.16 (最新 3.x)
  2. Phase 2: 等待 MyBatis Plus 发布 Boot 4 Starter
  3. Phase 3: 升级到 Spring Boot 4.0.x

优点: 风险适中,保持在 3.x 的最新状态
缺点: 需要两次升级


6. 升级收益

如果成功升级到 Spring Boot 4.0.6,可以获得:

收益 详情
Spring Framework 7 虚拟线程更好的支持、HTTP 接口增强
Tomcat 11 性能提升、Servlet 6.1 支持
Hibernate 7.2 更好的性能和稳定性
Flyway 11.14 更多数据库支持、性能优化
安全更新 最新的安全补丁
长期支持 Spring Boot 4.x 将是未来 3 年的主线版本
Jackson 3 新的 JSON 处理能力(但需要迁移)
虚拟线程 更好的并发性能Java 21+

7. 结论与建议

当前状态

  • Spring Boot 3.5.14 升级已完成并验证通过
  • ⚠️ Spring Boot 4.0 升级存在 2 个关键阻塞项 (MyBatis Plus, Druid)

建议

  1. 短期 (1-3个月): 保持在 Spring Boot 3.5.14,监控依赖组件适配进度
  2. 中期 (3-6个月): 当 MyBatis Plus 和 Druid 发布 Boot 4 Starter 时,立即评估升级
  3. 长期 (6-12个月): 执行 Spring Boot 4.0 升级

关键监控项


报告生成时间: 2026-06-04 22:30