Spring Boot 4.0 正式发布,真学不动了!

好家伙,就在昨晚,Spring Boot 团队悄悄地把 4.0.0 正式版发布了!这是 Spring Boot 真正意义上的新一代起点。

Spring Boot 4.0 基于 Spring Framework 7.0,带来了模块化更彻底的代码库、对 Java 25 的原生支持、全面拥抱 JSpecify 空安全体系、API 版本管理,以及一大波开发者期待已久的新特性。

话不多说,我们直击重点,看看这次更新到底有多香。概览:

新特性概览

HTTP Service Clients(终于来了!)

你是否已经厌倦了编写冗长的 RestTemplateWebClient 样板代码?

现在,你再也不用手写 HTTP 调用的实现类了,直接写一个接口就行:

less 复制代码
// 只需定义一个接口,Spring Boot会自动为你创建实现
@HttpExchange(url = "https://echo.zuplo.io")
public interface EchoService {

    @PostExchange
    Map<?, ?> echo(@RequestBody Map<String, String> message);
}

Spring Boot 4.0 为其提供了完整的自动配置和属性支持。这意味着,后端服务间的调用,从此将变得像本地方法调用一样简洁、直观,极大地降低了微服务开发的复杂性。

原生 API 版本管理

API 版本管理是后端开发中一个棘手但又无法回避的问题。现在,Spring Boot 为 Spring MVC 和 WebFlux 提供了原生的 API 版本控制支持。

通过简单的 spring.mvc.apiversion.*spring.webflux.apiversion.* 属性配置,或注入自定义的 ApiVersionResolver 等 Bean,你就可以轻松地实现基于 URL 路径、请求头或参数的版本控制策略。

支持 Gradle 9

Spring Boot 4.0 支持使用 Gradle 9 构建 Spring Boot 应用程序,同时仍然支持 Gradle 8.x(8.14 或更高版本)。

全面拥抱 JSpecify 空安全体系

Spring Boot 4.0 全面拥抱 JSpecify 空安全体系,核心变化只有一句话:默认非空(@NullMarked)+ 明确标注可空(@Nullable,让空指针从"运行时炸弹"变成"编译期报错"。

在类或包上加一个 @NullMarked,里面所有引用类型默认都是非空的,只有明确标了 @Nullable 的才可能为 null。这样:

  • 方法签名一目了然:返回值、参数到底会不会 null;
  • 配合 NullAway 后,漏检查的地方直接编译失败;
  • 零运行时开销,完全兼容现有代码;
  • 比 Optional 更轻量、更适合做大规模重构。

全面拥抱 Java 25

新版本正式提供对 Java 25 的顶级支持(LTS 版本 Java 17 依然兼容)。

当你在 application.properties 中开启虚拟线程 (spring.threads.virtual.enabled=true) 时,自动配置的 JDK HttpClient 将会默认使用虚拟线程,让你的 IO 密集型应用能够轻松获得巨大的性能提升。

依赖版本大跃进

Spring Boot 4.0 迎来了一次"全家桶"式的依赖升级:Spring Framework 7.0、Jackson 3.0、Hibernate 7.1、Tomcat 11、Jetty 12、Kafka 4.1、Kotlin 2.2.20......

几乎所有核心和第三方组件都同步到了最新稳定版。这相当于给你的整个技术栈做了一次"集体换代",带来了性能、安全性和新特性的全面提升。

Redis 静态主从支持

Lettuce 用户有福了!现在只需一行 spring.data.redis.masterreplica.nodes 配置,就能轻松搞定静态主从模式,不再强制依赖 Sentinel 或 Cluster。

这是我让 AI 总结的:

移除 Undertow

Spring Boot 4.0 完全移除了对 Undertow 的内嵌支持------不仅删掉了 spring-boot-starter-undertow,也不再提供任何 Undertow 相关的自动配置。移除的根本原因是:Spring Boot 4.0 基线升级到 Servlet 6.1(也就是说必须支持 Servlet 6.1 才能留在 starter 列表里),而截至 2025-10 官方发布说明时,Undertow 尚未兼容该版本。

这些新特性很多我都已经同步更新到了《Java 面试指北》(后端面试指南)中,保证内容与时俱进!

升级建议

4.0 是大版本,升级比平时麻烦一点。官方的强烈建议是:如果你现在还在 3.3、3.4 甚至更老的版本 → 先升到 3.5 再升 4.0。这条路径能帮你少踩 90% 的坑,强烈建议别跳过!

详细的迁移指南可以参考官方文档:github.com/spring-proj...

总结

Spring Boot 4.0.0 正式发布,基于 Spring Framework 7.0,全面支持 Java 25(含虚拟线程优化)。核心新特性包括:HTTP Service Clients 简化远程调用;原生 API 版本管理;全面采用 JSpecify 空安全体系(默认非空,编译期防 NPE);关键依赖升级至 Jackson 3.0、Tomcat 11、Hibernate 7.1 等;支持 Gradle 9;Redis 静态主从配置;移除 Undertow。

如果要升级的话,建议先迁移到 3.5 版本再升级。

相关推荐
90后小陈老师1 小时前
用户管理系统 03 搭建基本结构 | Java新手实战 | 最小架构用户管理系统(SpringBoot+Vue3)
java·spring boot·架构
k***1951 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
n***84071 小时前
Spring Boot(快速上手)
java·spring boot·后端
组合缺一1 小时前
Solon AI 开发学习3 - chat - 模型配置与请求选项
java·学习·ai·chatgpt·langchain·solon
小兔崽子去哪了1 小时前
Docker部署ZLMediaKit流媒体服务器并自定义配置指南
java·后端·容器
程序猿小蒜1 小时前
基于springboot的人口老龄化社区服务与管理平台
java·前端·spring boot·后端·spring
Caarlossss2 小时前
jdbc学习
java·开发语言·学习·http·tomcat·maven
Coder-coco2 小时前
个人健康系统|健康管理|基于java+Android+微信小程序的个人健康系统设计与实现(源码+数据库+文档)
android·java·vue.js·spring boot·微信小程序·论文·个人健康系统
断剑zou天涯2 小时前
【算法笔记】从暴力递归到动态规划(二)
java·算法·动态规划