2026年2月,Spring Framework 7.0.4正式发布。作为7.x主线的重要维护版本,本次更新包含40+ 项新特性、15个Bug修复、18项文档改进,以及多项依赖升级。
值得注意的是,Spring Framework 7.0是Spring Boot 4.0的底层核心,而Spring Boot 4.0被业界称为“爆炸性升级”,带来了模块化架构重构、虚拟线程原生支持等重大变化。因此,7.0.4的稳定性对整个Spring生态至关重要。

核心死锁Bug问题彻底修复
启动时死锁问题
这是一个最重要的Bug修复,issues为 #36260,是一个启动时死锁问题。
具体表现为,在应用启动阶段,如果存在多个ShutdownHook并发执行,可能导致 ContextClosedEvent 与 System.exit 之间的竞争条件,引发死锁。
影响范围包括以下场景。
- 使用优雅关闭(Graceful Shutdown)的应用
- 容器化环境(Kubernetes)中频繁重启的服务
- 集成测试场景下的上下文关闭
官方的修复方案优化了 ConfigurableApplicationContext 的关闭机制,确保在多线程环境下对生命周期事件的同步处理更加健壮。
好在这个问题在7.0.2和7.0.3中已部分修复,7.0.4进一步完善了边缘场景的处理,彻底消除了类似隐患。
其他重要Bug修复
总结出了下面5个,包括涉及的问题issues,描述以及影响场景。
| 问题编号 |
问题描述 |
影响场景 |
#36298 |
HttpEntity 参数无法反映修改后的HTTP头 |
RESTful API开发 |
#36293 |
ConcurrentReferenceHashMap 锁竞争问题 |
高并发缓存访问 |
#36285 |
AbstractMessageConverter 不支持MIME类型通配符 |
消息转换 |
#36266 |
StompBrokerRelayMessageHandler 重启失败 |
WebSocket/STOMP |
#36226 |
Netty4HeadersAdapter.remove 返回空列表而非null |
Netty响应式编程 |
启动速度提升30-50%
这个性能优化是一个巨大的亮点,启动速度提升30-50%。下面我们稍微展开一下。
请求映射性能大幅提升
7.0.4针对Web层的性能进行了多项优化,包括以下几项。
#36279:优化请求映射的哈希计算性能
#36278:加速 HandlerMethod 的Bean查找
#36276:改进版本映射(Version Mapping)性能
#36275:单模式请求映射优化
根据官方以及社区的反馈,实际效果在大型微服务应用中,这些优化可将请求处理延迟降低15-20%。
Validation验证性能优化
根据#36274可知,针对Bean Validation的验证组判定逻辑进行了优化,减少反射调用开销,提升表单验证场景的性能。
方法参数注解缓存
36307 表明 MethodParameter 和 AnnotatedMethod 现在会缓存方法注解信息,避免重复解析,特别适用于大量使用注解的AOP场景。
部分新特性解读
元注解支持深度扩展
Spring 7.0.4进一步增强了元注解(Meta-annotation)的灵活性。
// 现在 @Lazy 和 @Validated 支持任意深度的元注解
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Lazy // 作为元注解
public @interface LazyService {
String value() default "";
}
@LazyService // 间接实现 @Lazy 功能
public class MyService {
// ...
}
相关Issue为:#36306(@Lazy)、#36305(@Validated)。说白了@Lazy注解等,现在支持套娃了。
HTTP消息转换器可定制化
开发者现在可以禁用默认的HttpMessageConverter注册,实现更精细的MVC配置。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 清除默认转换器,只添加自定义的
converters.clear();
converters.add(new MyCustomConverter());
}
}
拦截器异常日志增强
现在,当 HandlerInterceptor 抛出异常时,日志现在会明确标识是哪个拦截器出了问题,极大简化调试。
ERROR o.s.web.servlet.DispatcherServlet -
HandlerInterceptor [com.xttblog.AuthInterceptor] threw exception: ...
重试机制增强
Spring Retry的集成得到了进一步完善。
- 新增
beforeRetry 回调,支持 RetryState 参数
- 提供
TaskCallback/Callable/Runnable 包装器,简化重试任务编写
@Retryable(backoff = @Backoff(delay = 1000))
public void retryableTask(TaskCallback callback) {
// 重试逻辑
}
RestClient增强
新增 requiredBody() 方法,强制要求响应体必须存在,避免空指针。
String result = restClient.get()
.uri("/api/data")
.retrieve()
.requiredBody(String.class); // 如果响应体为空,直接抛异常
还有其它小更新,推荐大家多去官网 https://github.com/spring-projects/spring-framework/releases/tag/v7.0.4 看看。
依赖升级
这个版本的发布,也升级了不少依赖,Spring框架也是紧跟技术前沿。
| 依赖 |
升级版本 |
亮点 |
Reactor |
2025.0.3 |
响应式流性能优化 |
Micrometer |
1.6.3 |
可观测性增强 |
ASM |
9.9.1 |
Java 25字节码支持 |
Apache POI |
5.5 |
Office文档处理 |
特别值得关注的是Reactor 2025.0.3的升级,它针对JDK 25的虚拟线程进行了深度优化,结合Spring Framework 7.0的多线程异步启动机制,可实现30-50% 的启动速度提升。
升级建议与注意事项
推荐升级场景
- 已在7.x版本:建议尽快升级至7.0.4,获得死锁修复和性能优化
- 使用Spring Boot 4.0:Spring Boot 4.0.4将包含此版本,建议同步升级
- 云原生应用:容器化部署、Kubernetes环境特别受益于启动优化和稳定性修复
注意事项
- JDK版本要求:Spring Framework 7.0最低要求Java 17,推荐Java 21或25以获得虚拟线程支持
- Jakarta EE 11:确保依赖库已迁移至
jakarta.* 命名空间
- 破坏性变更:从6.x升级需参考《Spring Boot 4迁移指南》
https://spring.io/projects/spring-boot
总结
Spring Framework 7.0.4是一个高质量的生产级维护版本,它不仅彻底解决了早期版本的死锁隐患,还通过多项性能优化显著提升了Web层处理能力。元注解的深度支持、HTTP转换器的灵活配置、重试机制的增强,都让开发体验更加优雅。
对于已经在使用Spring 7.x的团队,强烈建议尽快升级;对于仍在6.x观望的开发者,随着Spring Boot 4.0生态的全面成熟,升级时机已然成熟。目前看来Spring 7.x和Spring Boot 4.x已经逐渐成熟。如果你想了解更多类似的技术深度解析或与社区开发者交流,可以访问云栈社区的相关板块。