Skip to content

v4.6.0

Latest

Choose a tag to compare

@huayanYu huayanYu released this 13 Oct 15:10

发布 V4.6.0

距上次发布 8 个月、63 笔变更的聚合发布,含安全修复与三项对外变化,建议尽快升级。

修复依赖泄漏(JDK 8 报 No suitable driver 的用户请读)

  • 修复依赖泄漏:4.5.0 会把 oracle-spring-boot-starter-ucp、ucp(及 ojdbc11)传递给所有
    使用方。ojdbc11 是 Java 11 字节码,在 JDK 8 上会让 DriverManager 的驱动 ServiceLoader
    遍历中断,导致其他驱动(mysql 等)注册失败、报 No suitable driver。现已改为 compileOnly。
    仍在 4.5.0 上的 JDK 8 应用:升级至本版本,或排除 com.oracle.database.spring:oracle-spring-boot-starter-ucp
    与 com.oracle.database.jdbc:ucp。

  • Fix dependency leak: 4.5.0 passed oracle-spring-boot-starter-ucp, ucp (and ojdbc11) to every
    consumer. ojdbc11 carries Java 11 bytecode, so on JDK 8 it aborts DriverManager's driver
    ServiceLoader iteration — other drivers (mysql etc.) never register and you get No suitable driver.
    These dependencies are now compileOnly. If you must stay on 4.5.0 on JDK 8, exclude
    com.oracle.database.spring:oracle-spring-boot-starter-ucp and com.oracle.database.jdbc:ucp.

安全

  • 修复 DsSpelExpressionProcessor 的 SpEL 注入(潜在 RCE)(#767)

行为变化(升级注意)

  • Seata 代理检查器恢复生效:spring.datasource.dynamic.seata=true 且命中 Seata 自动代理的用户将开始看到 WARN 提示
  • Boot 4 线对齐 mybatis-spring 4.x,移除传递的 2.1.2 冲突 (#783)
  • 所有构件新增 Automatic-Module-Name(JPMS 稳定模块名契约)

修复

  • 事务核心 7 处:NESTED savepoint 成功路径、未标记连接泄漏、完成链中断、REQUIRES_NEW 无连接 NPE (#764)、Error 回滚语义等
  • 路由:并发下 containsKey/get 双读返回 null、删除后空组除零
  • native image:RandomDynamicDataSourceStrategy 反射注册;nativeTest 修复 (#788)

新增

  • Actuator 端点 /actuator/dynamic-datasource:数据源清单、分组构成与全局开关(池类型经 ItemDataSource 拆箱)
  • @DSTransactional 传播契约测试(12 场景 × 3 产线)与语义边界文档
  • SUPPORT.md:三条 Boot 产线的维护策略

工程

  • 构建迁移 Maven → Gradle(version catalog / toolchain / JaCoCo 聚合 / SBOM + OSV 扫描)
  • README 重写(英文主版 + 简体中文)、每笔 release 附带 CycloneDX SBOM

What's Changed

  • Fix NPE in ConnectionFactory when nested REQUIRES_NEW transaction establishes no JDBC connections by @huayanYu with @Copilot in #764
  • Fix SpEL injection (potential RCE) in DsSpelExpressionProcessor by @huayanYu with @Copilot in #767
  • Align Boot 4 starter to mybatis-spring 4.x to remove transitive 2.1.2 conflict by @huayanYu with @Copilot in #783
  • Support JDK 25 builds with Gradle 9.8.0, Lombok 1.18.42 and Gradle Wrapper Neo by @linghengqian in #786
  • Fix Oracle UCP leakage by changing oracle-spring-boot-starter-ucp and ucp to compileOnly by @linghengqian in #787
  • Fix nativeTest for Spring Boot 3 and 4 starters under GraalVM Native Image by @linghengqian in #788

特别感谢

本版 3 个社区 PR 来自 @linghengqian:JDK 25 / Gradle Wrapper Neo 构建支持、Oracle UCP 泄漏修复(并推动其成为本版必读项)、GraalVM nativeTest 修复——都是构建与原生镜像方向的关键改进。欢迎更多社区贡献,每一份都会出现在 release notes 里。

Full Changelog: v4.50...v4.6.0