# OpenHIS 后端组件升级方案 > **编制日期**: 2026-06-04 > **基线**: Spring Boot 2.5.15 + MyBatis Plus 3.5.5 > **目标**: 升级安全漏洞组件 + 小版本迭代,不做大版本迁移 --- ## 升级原则 1. **安全优先** — BouncyCastle 等有漏洞的组件必须升 2. **小版本优先** — 只升 patch/minor,不升 major 3. **逐个验证** — 每升一个组件跑 `mvn clean package -DskipTests` + 启动测试 4. **不动核心** — 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` | | **当前值** | `1.69` | | **操作** | 删除 jdk15on,改用 jdk18on | | **新增依赖** | `org.bouncycastle:bcprov-jdk18on:1.80`
`org.bouncycastle:bcpkix-jdk18on:1.80` | | **代码影响** | 搜索 `rg "bcprov\|bcpkix" --type java` — 当前无直接引用,仅通过依赖传递 | | **验证** | `mvn compile` + 启动后检查登录/token 签发 | | **回滚** | 改回 `1.69` | **具体操作:** ```xml 1.69 org.bouncycastle bcprov-jdk18on 1.80 org.bouncycastle bcpkix-jdk18on 1.80 ``` --- ## Phase 2: 连接池 & 工具库升级 ### 2.1 Druid 1.2.27 → 1.2.28 🟢 | 项 | 内容 | |---|---| | **风险** | 🟢 低 — patch 版本 | | **变更** | `1.2.27` → `1.2.28` | | **代码影响** | `DruidProperties.java` — API 无变化 | | **验证** | 启动后检查 Druid 监控页 `/druid/` | ### 2.2 Fastjson2 2.0.58 → 2.0.61 🟢 | 项 | 内容 | |---|---| | **风险** | 🟢 低 — patch 版本 | | **变更** | `2.0.58` → `2.0.61` | | **代码影响** | 无直接引用(0 个文件),仅依赖传递 | | **验证** | `mvn compile` | ### 2.3 Hutool 5.3.8 → 5.8.x 🟢 | 项 | 内容 | |---|---| | **风险** | 🟢 低 — minor 版本 | | **变更** | `5.3.8` → `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 版本 | | **变更** | `6.6.5` → `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 版本 | | **变更** | `2.13.0` → `2.21.0` | | **代码影响** | 无直接引用 | | **验证** | `mvn compile` | ### 3.3 PostgreSQL Driver 42.2.27 → 42.7.x 🟢 | 项 | 内容 | |---|---| | **风险** | 🟢 低 | | **变更** | `42.2.27` → `42.7.4` | | **代码影响** | 无,仅 JDBC 驱动 | | **验证** | 启动后数据库连接正常 | --- ## Phase 4: 文档 & 分页 ### 4.1 Swagger → SpringDoc 1.8.x 🟡 | 项 | 内容 | |---|---| | **风险** | 🟡 中 — 不同库 | | **当前** | `3.0.0`(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 版本 | | **变更** | `5.5.12` → `5.5.13.4` | | **代码影响** | PDF 生成相关 | ### 5.2 Kernel 7.1.2 → 7.1.2 保持 🟢 | 项 | 内容 | |---|---| | **建议** | 保持 — 已是较新版本 | --- ## 执行计划 ``` Day 1: Phase 1 (BouncyCastle) + Phase 2 (Druid/Fastjson2/Hutool) → mvn clean package -DskipTests → 启动测试 Day 2: Phase 3 (OSHI/PostgreSQL/Commons IO) → mvn clean package -DskipTests → 启动测试 + 系统监控验证 Day 3: Phase 5 (itextpdf) → mvn clean package -DskipTests → PDF 功能验证 ``` --- ## 版本对照表 | 组件 | 当前 | 升级到 | 类型 | 状态 | |---|---|---|---|---| | 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 | 不同库 | ⚠️ 暂不动 | --- ## 验证清单 每次升级后检查: - [ ] `mvn clean package -DskipTests` 编译通过 - [ ] 启动无报错 - [ ] 登录功能正常 - [ ] Druid 监控页 `/druid/` 可访问 - [ ] 系统监控页正常(OSHI 升级时) - [ ] PDF 导出正常(itextpdf 升级时) - [ ] 数据库连接正常