Spring Boot 3.x要求Java 17+并全面迁移到Jakarta EE 9+命名空间,原生镜像支持GA,弃用RestTemplate而推荐WebClient,集成Spring Security 6.x强化安全与OAuth2。

Spring Boot 3.x 是 Spring 生态面向 Java 17+ 和 Jakarta EE 9+ 的重要升级版本,核心变化围绕现代化、安全性和模块化展开。它不再支持 Java 16 及以下版本,最低要求 Java 17(LTS),并全面迁移到 Jakarta EE 9+ 命名空间(如 jakarta.* 替代 javax.*)。
全面迁移至 Jakarta EE 9+
所有 Servlet、JPA、Validation、Transaction 等 API 包名从 javax.* 升级为 jakarta.*。这意味着:
- 旧版
javax.servlet.http.HttpServlet需改为jakarta.servlet.http.HttpServlet - Spring Data JPA 实体注解如
@Entity、@Column现来自jakarta.persistence.* - Bean Validation 使用
jakarta.validation.*(如@NotBlank),且 Hibernate Validator 6.2+ 成为默认实现 - 若项目依赖第三方库仍使用
javax.*,需确认其已发布 Jakarta 兼容版本,否则将出现类加载冲突或编译失败
原生镜像支持(GraalVM Native Image)正式 GA
Spring Boot 3.1 起,对 GraalVM 原生编译的支持进入生产就绪状态,显著提升启动速度与内存效率:
- 通过
spring-boot-starter-aot模块提供 AOT(Ahead-of-Time)编译能力 - 构建时自动分析 Bean 初始化逻辑、反射/代理/资源加载等,生成优化的原生映像
- 使用
./gradlew nativeCompile或mvn spring-boot:build-image(配合 Paketo 构建器)可直接产出原生可执行文件 - 注意:动态类加载、运行时字节码增强(如某些 AOP 场景)、部分测试框架(如 Mockito 默认配置)需显式适配或替换
HTTP 客户端统一与 WebClient 增强
Spring Boot 3.x 默认弃用 RestTemplate(标记为 @Deprecated),推荐使用响应式 WebClient:
立即学习“Java免费学习笔记(深入)”;
-
WebClient成为官方首推 HTTP 客户端,内置对 Reactor、Netty、连接池、超时、重试等完整支持 - 新增
@RegisterRestClient(来自 MicroProfile REST Client)用于声明式 REST 调用(需引入spring-boot-starter-jersey或第三方适配器) - 自动配置更智能:例如根据 classpath 自动选择 Netty 或 Jetty 作为底层 HTTP 引擎
- 若必须保留 RestTemplate,仍可使用,但需自行管理生命周期和线程安全
安全性与授权模型升级
Spring Security 6.x 深度集成,带来更清晰的授权配置方式和 OAuth2 支持强化:
- 默认启用 CSRF 保护(对非 GET/HEAD/TRACE 请求);需显式禁用或配置匹配策略
- 基于
SecurityFilterChain的函数式安全配置取代旧版WebSecurityConfigurerAdapter - OAuth2 Resource Server 支持 JWT 解析自定义 Claim 映射、多签发者(issuer)、JWK Set URI 自动刷新
- 支持 RFC 8693 Token Exchange 和 RFC 9068 JWT Profile for OAuth 2.0 Authorization Servers









