Files
his/docs/BACKEND_UPGRADE_PLAN.md
华佗 dbe146725a chore(deps): Spring Boot 2.5.15→2.7.18 + MyBatis Plus 3.5.5→3.5.16
升级内容:
- Spring Boot 2.5.15 → 2.7.18 (含 Spring Security 5.7, Tomcat 9.0.96)
- MyBatis Plus 3.5.5 → 3.5.16 (含 mybatis-plus-jsqlparser 拆分模块)
- JSqlParser 4.5 → 5.2 (MyBatis Plus 3.5.9+ 要求)
- PageHelper 1.4.7 → 2.1.1 (兼容 JSqlParser 5.x)
- mysql:mysql-connector-java → com.mysql:mysql-connector-j (Spring Boot 2.7 BOM 变更)

兼容性修复:
- FieldStrategy.IGNORED → FieldStrategy.NEVER (3.5.16 重命名)
- ScanOptionsBuilder → ScanOptions.scanOptions() 工厂方法
- saveOrUpdate(entity, wrapper) → saveOrUpdate(entity) (wrapper 签名移除)
- PermitAllUrlProperties: getBean(class) → getBean(name,class) + null 检查
- application.yml: 添加 spring.mvc.pathmatch.matching-strategy=ant-path-matcher
- application.yml: 禁用 springfox (与 Spring Boot 2.7 不兼容)

验证结果:
-  mvn clean package -DskipTests BUILD SUCCESS
-  登录接口 HTTP 200
-  分页查询 (数据字典 326 条, 用户 84 条)
-  路由信息 (22 个顶级菜单)
-  流程引擎 (Flowable) 正常初始化
2026-06-04 13:35:14 +08:00

6.2 KiB
Raw Blame History

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
当前值 <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

具体操作:

<!-- 旧 -->
<bcprov-jdk15on.version>1.69</bcprov-jdk15on.version>

<!-- 新 -->
<!-- 删除 bcprov-jdk15on.version 属性 -->
<!-- 在 dependencyManagement 中添加 -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk18on</artifactId>
    <version>1.80</version>
</dependency>
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcpkix-jdk18on</artifactId>
    <version>1.80</version>
</dependency>

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+ 文件使用 ObjectUtilStrUtil
验证 检查使用 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 — 使用 SystemInfoCentralProcessorGlobalMemory
验证 系统监控页面正常显示 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 保持 🟢

内容
建议 保持 — 已是较新版本

执行计划

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 升级时)
  • 数据库连接正常