Repository navigation
发布 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(andojdbc11) to every
consumer.ojdbc11carries Java 11 bytecode, so on JDK 8 it abortsDriverManager's driver
ServiceLoader iteration — other drivers (mysql etc.) never register and you getNo suitable driver.
These dependencies are nowcompileOnly. If you must stay on 4.5.0 on JDK 8, exclude
com.oracle.database.spring:oracle-spring-boot-starter-ucpandcom.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-spring4.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