本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
距离上次写 Spring 7 的内容,差不多有一个月了,今天我去看了一下 Spring 的官网,发现 Spring Framework 7.0.3 已经正式发布了。这个版本,把内置的容错能力增强了,关键的死锁 Bug 也彻底的修复了。
作为 7.x 主线的重要维护版本,这次更新带来了65 项修复和文档改进,并随 Spring Boot 4.0.2 一同发布(Spring Boot 4.0.2 上周我已经写过了,参考《https://mp.weixin.qq.com/s/A1hfO5-MJmVYHg-iBh5UXg》)。
值得注意的是,这次的 7.0.3 不仅修复了之前版本中困扰开发者的ConcurrentReferenceHashMap 死锁问题,还进一步完善了 7.0 版本引入的内置容错(Resilience)特性。下面业余草就为大家解读一下这个版本更新的大致内容吧。
三大核心更新解读
测试上下文智能暂停机制
测试上下文智能暂停机制Test Context Pausing是 7.0.3 最值得关注的变更。框架现在会对未使用的测试ApplicationContext 实施延迟暂停策略,首次使用不同上下文时触发。
配置方式如下所示。
# 方案 1:智能懒暂停(默认,推荐)
spring.test.context.cache.pause=LAZY
# 行为:当前上下文用完后,只有遇到不同配置时才暂停它
# 方案 2:立即暂停(激进省内存)
spring.test.context.cache.pause=ALWAYS
# 行为:每个测试类跑完立即暂停,哪怕下一个测试用相同配置也要唤醒
# 方案 3:禁用(兼容旧行为)
spring.test.context.cache.pause=NEVER
# 行为:像旧版本一样,上下文一直活跃直到被驱逐
这项优化显著降低了内存占用,特别是在大型多模块项目中,能有效避免测试进程因上下文堆积导致的 OOM。
说白了,这个机制解决的是“顺序执行时的上下文复用效率”。
内置容错能力持续完善
Spring 7.0 将原本独立的 spring-retry 模块集成到核心框架,7.0.3 进一步增强了该功能。
- @Retryable 增强:新增监听器注册支持,可追踪重试触发事件
- @ConcurrencyLimit 优化:新增拒绝异常抛出选项,避免线程无限堆积
- SyncTaskExecutor 并发控制:新增任务拒绝支持,配合并发限制使用更安全
简单使用示例如下所示。
@Service
public class OrderService {
@Retryable(
retryFor = {RestClientException.class},
maxAttempts = 3,
backoff = @Backoff(delay = 1000)
)
public Order createOrder(OrderRequest request) {
// 调用外部支付接口
return restClient.postForObject("/orders", request, Order.class);
}
@ConcurrencyLimit(maxConcurrent = 10, reject = true)
public void processPayment(Payment payment) {
// 严格限制并发数,超限立即抛异常
}
}
API 版本控制体验优化
针对 7.0 引入的 API 版本控制功能,7.0.3 修复了无版本号时静态资源加载失败的关键问题(#36059、#36058)。
- 修复了
DefaultApiVersionInserter的双重编码问题(#36097) - 允许
WebFlux ApiVersionResolver返回 Mono(#36084) - 优化单字符通配符路径匹配性能(#36095)
简单来说,7.0.3 之前,开了 API 版本控制就像给整个应用加了一道“版本门”,没贴版本标签的请求(静态资源、错误页面)都被拒之门外。7.0.3 给这道门加了“贵宾通道”,让不该被版本控制的资源正常通行。
重点 Bug 修复:死锁问题彻底解决
Spring 7.0.3 修复了 17 个 Bug,其中最重要的是延续了 7.0.2 对ConcurrentReferenceHashMap死锁问题的修复。
也就是说,https://mp.weixin.qq.com/s/ELbKnj3HFvf87uYlsTCfWg 中的这个问题,虽然已经在 7.0.2 中得到了修复。在 7.0.3 版本中,进一步的修复了相关的类型匹配和属性描述符问题。比如,修复了#36123 SmartFactoryBean类型匹配问题;正确处理 ResolvableType.NONE 避免类型推断错误导致的重复创建尝试;修复#36113 和 #36019 PropertyDescriptorUtils 可靠性问题等,彻底消除类似隐患。
其他重要变更
新特性亮点方面:
- HTTP 服务接口增强:支持属性占位符(#36126),
@RequestBody Object参数将使用实际值类型(#36078) - Jackson XML 编解码器:原生支持 Jackson XML 处理(#35752)
- HttpComponents 5.6 支持:升级至最新 HTTP 客户端(#36100)
- 空安全改进:更新至 NullAway 0.12.15,修复大量潜在 NPE 风险(#36054)
其它的一些关键修复,如下所示。
WiretapConnector数据缓冲区泄漏修复(#36050)UriComponentsBuilder单字符片段丢失问题(#36029)- 方法参数名在首次调用时为空的问题(#36024)
- Hibernate Validator 9 模块化路径反射警告(#36012)
其余的,PagedListHolder 和 PropertyComparator 这两个类已标记为废弃,将在未来版本移除(#36139)。
总结
Spring Framework 7.0.3 是一个高质量的生产级维护版本,不仅彻底解决了早期版本的死锁隐患,还通过测试上下文智能暂停机制显著提升了开发体验。内置的 @Retryable 和 @ConcurrencyLimit 注解让分布式系统的容错设计变得更加简洁优雅。
对于已经在使用 Spring 7.x 的团队,建议尽快升级至 7.0.3;对于仍在 6.x 观望的开发者,随着生态(Spring Boot 4.0、Spring Security 7.0、Spring Data 2025.1 等)的全面成熟,升级时机已然成熟。
总的来说,Spring 7.0.3 还是小修小补吧。对于 Spring 7.x 来说,越来越稳定了。
参考资料
https://github.com/spring-projects/spring-framework/releases/tag/v7.0.3https://spring.io/blog/2026/01/15/spring-framework-7-0-3-available-nowhttps://mp.weixin.qq.com/s/ELbKnj3HFvf87uYlsTCfWghttps://mp.weixin.qq.com/s/A1hfO5-MJmVYHg-iBh5UXg

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Spring 7.0.3 重磅发布,65 项更新、新增测试上下文智能暂停机制