- 重命名目录: openhis-server-new → healthlink-his-server - 重命名目录: openhis-ui-vue3 → healthlink-his-ui - 重命名Java类: OpenHisApplication → HealthLinkHisApplication - 重命名Java类: OpenHisMiniApp → HealthLinkHisMiniApp - 重命名组件目录: OpenHis → HealthLinkHis - 重命名样式文件: openhis.scss → healthlink-his.scss - 重命名配置: nginx-openhis.conf → nginx-healthlink-his.conf - 更新所有源码引用 (0个残留) - 更新所有文档/脚本/配置中的引用
194 lines
6.4 KiB
Markdown
194 lines
6.4 KiB
Markdown
# 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 升级
|
||
|
||
### 关键监控项
|
||
- [ ] [MyBatis Plus GitHub](https://github.com/baomidou/mybatis-plus) — 关注 `mybatis-plus-spring-boot4-starter` 发布
|
||
- [ ] [Druid GitHub](https://github.com/alibaba/druid) — 关注 `druid-spring-boot4-starter` 发布
|
||
- [ ] [Flowable GitHub](https://github.com/flowable/flowable-engine) — 关注 8.x 对 Spring Framework 7 的兼容性
|
||
- [ ] [Springdoc GitHub](https://github.com/springdoc/springdoc-openapi) — 关注对 Jackson 3 的支持
|
||
|
||
---
|
||
|
||
*报告生成时间: 2026-06-04 22:30*
|