OpenHIS 后端组件升级方案
编制日期: 2026-06-04
基线: Spring Boot 2.5.15 + MyBatis Plus 3.5.5
目标: 升级安全漏洞组件 + 小版本迭代,不做大版本迁移
升级原则
- 安全优先 — BouncyCastle 等有漏洞的组件必须升
- 小版本优先 — 只升 patch/minor,不升 major
- 逐个验证 — 每升一个组件跑
mvn clean package -DskipTests + 启动测试
- 不动核心 — Spring Boot 2.5、MyBatis Plus 3.5 暂不升
Phase 1: 安全修复(必做)
1.1 BouncyCastle 1.69 → 1.80 🔴
| 项 |
内容 |
| 风险等级 |
🔴 高 — 1.69 有 CVE 安全漏洞 |
| 变更文件 |
openhis-server-new/pom.xml |
| 当前值 |
<bcprov-jdk15on.version>1.69</bcprov-jdk15on.version> |
| 操作 |
删除 jdk15on,改用 jdk18on |
| 新增依赖 |
org.bouncycastle:bcprov-jdk18on:1.80
org.bouncycastle:bcpkix-jdk18on:1.80 |
| 代码影响 |
搜索 rg "bcprov|bcpkix" --type java — 当前无直接引用,仅通过依赖传递 |
| 验证 |
mvn compile + 启动后检查登录/token 签发 |
| 回滚 |
改回 1.69 |
具体操作:
Phase 2: 连接池 & 工具库升级
2.1 Druid 1.2.27 → 1.2.28 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — patch 版本 |
| 变更 |
<druid.version>1.2.27</druid.version> → 1.2.28 |
| 代码影响 |
DruidProperties.java — API 无变化 |
| 验证 |
启动后检查 Druid 监控页 /druid/ |
2.2 Fastjson2 2.0.58 → 2.0.61 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — patch 版本 |
| 变更 |
<fastjson2.version>2.0.58</fastjson2.version> → 2.0.61 |
| 代码影响 |
无直接引用(0 个文件),仅依赖传递 |
| 验证 |
mvn compile |
2.3 Hutool 5.3.8 → 5.8.x 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — minor 版本 |
| 变更 |
<hutool-all.version>5.3.8</hutool-all.version> → 5.8.35 |
| 代码影响 |
rg "cn.hutool" --type java — 约 10+ 文件使用 ObjectUtil、StrUtil |
| 验证 |
检查使用 Hutool 的业务模块(预约管理等) |
| 注意 |
5.3.8 → 5.8 跨了多个 minor,需检查 deprecated API |
Phase 3: 监控 & IO 升级
3.1 OSHI 6.6.5 → 6.10.0 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — minor 版本 |
| 变更 |
<oshi.version>6.6.5</oshi.version> → 6.10.0 |
| 代码影响 |
Server.java — 使用 SystemInfo、CentralProcessor、GlobalMemory |
| 验证 |
系统监控页面正常显示 CPU/内存/磁盘信息 |
| 注意 |
OSHI 6.10 API 基本兼容 6.6 |
3.2 Commons IO 2.13.0 → 2.21.0 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — minor 版本 |
| 变更 |
<commons.io.version>2.13.0</commons.io.version> → 2.21.0 |
| 代码影响 |
无直接引用 |
| 验证 |
mvn compile |
3.3 PostgreSQL Driver 42.2.27 → 42.7.x 🟢
| 项 |
内容 |
| 风险 |
🟢 低 |
| 变更 |
<postgresql.version>42.2.27</postgresql.version> → 42.7.4 |
| 代码影响 |
无,仅 JDBC 驱动 |
| 验证 |
启动后数据库连接正常 |
Phase 4: 文档 & 分页
4.1 Swagger → SpringDoc 1.8.x 🟡
| 项 |
内容 |
| 风险 |
🟡 中 — 不同库 |
| 当前 |
<swagger.version>3.0.0</swagger.version>(springfox) |
| 目标 |
springdoc-openapi 1.8.6 |
| 操作 |
替换 springfox 依赖为 springdoc |
| 代码影响 |
rg "swagger|ApiModel|ApiOperation" --type java — 需改注解 |
| 建议 |
⚠️ 暂不升 — 注解改造工作量大 |
4.2 PageHelper 1.4.7 → 1.4.7 保持 🟢
| 项 |
内容 |
| 建议 |
保持当前版本 — 1.4.7 稳定且够用 |
| 原因 |
升级到 2.x 需配合 Spring Boot 4 |
Phase 5: PDF & 签名
5.1 itextpdf 5.5.12 → 5.5.13.4 🟢
| 项 |
内容 |
| 风险 |
🟢 低 — patch 版本 |
| 变更 |
<itextpdf.version>5.5.12</itextpdf.version> → 5.5.13.4 |
| 代码影响 |
PDF 生成相关 |
5.2 Kernel 7.1.2 → 7.1.2 保持 🟢
执行计划
版本对照表
| 组件 |
当前 |
升级到 |
类型 |
状态 |
| Spring Boot |
2.5.15 |
保持 |
major |
🔒 暂不动 |
| MyBatis Plus |
3.5.5 |
保持 |
major |
🔒 暂不动 |
| PageHelper |
1.4.7 |
保持 |
major |
🔒 暂不动 |
| BouncyCastle |
1.69 |
1.80 |
major |
🔴 必做 |
| Druid |
1.2.27 |
1.2.28 |
patch |
🟢 可做 |
| Fastjson2 |
2.0.58 |
2.0.61 |
patch |
🟢 可做 |
| Hutool |
5.3.8 |
5.8.35 |
minor |
🟢 可做 |
| OSHI |
6.6.5 |
6.10.0 |
minor |
🟢 可做 |
| Commons IO |
2.13.0 |
2.21.0 |
minor |
🟢 可做 |
| PostgreSQL |
42.2.27 |
42.7.4 |
minor |
🟢 可做 |
| itextpdf |
5.5.12 |
5.5.13.4 |
patch |
🟢 可做 |
| Swagger/SpringDoc |
3.0.0 |
1.8.6 |
不同库 |
⚠️ 暂不动 |
验证清单
每次升级后检查: