前言
就在前几天,2026年6月10日,Spring Boot官方正式发布了 4.1.0 版本。
消息一出,整个Java技术圈都沸腾了。
说实话,Spring Boot 4.0在2025年11月发布的时候,已经是一次“代际大升级”——Jakarta EE 11基线、Jackson 3、JSpecify空值安全、Gradle 9支持。
那一次升级,很多团队到现在还没完全消化完。
而这一次4.1.0,虽然官方说是“增量升级”,但带来的新特性,个个都是生产环境的硬核刚需。
有些小伙伴在工作中可能已经听说了——gRPC官方支持、SSRF漏洞防护、Kotlin 2.3、懒加载数据源连接……每一个单拿出来,都值得写一篇文章专门讲。
今天,我就把这些新特性从头到尾给你拆解一遍,让你看完就能直接上手用。
希望对你会有所帮助。
一、先回顾一下
在聊4.1的新特性之前,我们先花2分钟回顾一下,Spring Boot 4.0到底带来了什么。
Spring Boot 4.0(2025年11月发布)是一次“代际大升级”:
- Jakarta EE 11基线 —— 从
javax.* 彻底切换到 jakarta.*
- Jackson 3 —— JSON处理库大版本升级
- JSpecify空值安全 —— 更严格的Null-Safety注解体系
- API版本化 —— 更好的兼容性管理
- Gradle 9支持 —— 构建工具链升级
而Spring Boot 4.1是建立在Spring Framework 7.0.x之上的增量增强版。
它的定位非常清晰:不搞“推倒重来”,而是把4.0没来得及做、生产环境最需要的能力,一次性补齐。
下面这张图,帮你理清整个Spring Boot 4.x家族的演进脉络:

接下来,我们逐一拆解4.1.0最值得关注的8大核心新特性。
二、重磅一:gRPC官方支持
有些小伙伴可能会问:gRPC不是早就有了吗?为什么说Spring Boot 4.1才“正式支持”?
以前在Spring Boot里用gRPC,得自己手动配置Netty服务器、注册服务、处理拦截器,或者依赖第三方的Starter。
踩坑无数,配置繁琐,维护困难。
Spring Boot 4.1来了之后,这一切都变了。
gRPC正式成为Spring Boot的一等公民。
3.1 新增的模块
Spring Boot 4.1引入了三个全新的模块化Starter:
spring-boot-starter-grpc-server —— gRPC服务端自动配置
spring-boot-starter-grpc-client —— gRPC客户端自动配置
spring-boot-starter-batch-mongodb —— Spring Batch + MongoDB支持
3.2 服务端配置示例
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-grpc-server</artifactId>
</dependency>
编写你的gRPC服务实现:
@GrpcService // 标记这是一个gRPC服务
public class GreetingServiceImpl extends GreetingServiceGrpc.GreetingServiceImplBase {
@Override
public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
String message = "Hello, " + request.getName() + "!";
HelloReply reply = HelloReply.newBuilder().setMessage(message).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
就这么简单。 @GrpcService 注解一加,Spring Boot自动帮你完成服务注册、Netty启动、拦截器装配。
配置文件:
spring:
grpc:
server:
port: 9090 # gRPC服务端口,默认9090
transport: netty # 支持netty或servlet
3.3 客户端配置示例
@GrpcClient("my-grpc-service") // 注入一个gRPC客户端
private GreetingServiceGrpc.GreetingServiceBlockingStub greetingClient;
public String callGreeting(String name) {
HelloRequest request = HelloRequest.newBuilder().setName(name).build();
HelloReply reply = greetingClient.sayHello(request);
return reply.getMessage();
}
3.4 异常处理:@GrpcAdvice
Spring Boot 4.1还带来了 @GrpcAdvice,用于集中处理gRPC异常:
@GrpcAdvice
public class GlobalGrpcExceptionHandler {
@GrpcExceptionHandler(IllegalArgumentException.class)
public StatusRuntimeException handleIllegalArgument(IllegalArgumentException e) {
return Status.INVALID_ARGUMENT.withDescription(e.getMessage()).asRuntimeException();
}
}
3.5 自动装配Observation拦截器
服务端会自动装配 ObservationGrpcServerInterceptor,支持自定义观测约定,自动收集gRPC调用的Metrics和Tracing数据。
spring:
grpc:
server:
observation:
enabled: true # 默认开启
3.6 支持的传输方式
Spring gRPC支持两种传输方式:
- Standalone Netty —— 适合纯gRPC场景,高性能
- Servlet HTTP/2 —— 适合与现有Servlet容器集成
3.7 gRPC服务调用链路图

三、重磅二:HTTP Client SSRF防护
有些小伙伴可能听说过SSRF(Server-Side Request Forgery,服务端请求伪造)——攻击者利用服务端发起HTTP请求的功能,去访问内网资源、读取敏感文件。这是一个非常危险的安全漏洞。
Spring Boot 4.1这次直接在框架层加入了SSRF防护机制。
4.1 底层原理
SSRF防护的核心是 InetAddressFilter。它的工作原理是:
- 当HttpClient要发起请求时,先解析目标域名对应的IP地址
- InetAddressFilter检查这个IP是否在允许列表中
- 如果IP在黑名单(如内网IP段、本地回环地址等),直接拒绝请求
- 避免请求被重定向到恶意地址
4.2 配置方式
spring:
http:
client:
ssrf:
enabled: true # 开启SSRF防护
deny-ip-subnets: # 禁止访问的IP段
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 127.0.0.0/8
allow-ip-subnets: # 允许访问的IP段(白名单优先)
- 192.168.1.0/24
配置逻辑很清晰:先匹配白名单,再匹配黑名单,默认拦截所有内网IP。
4.3 代码示例
@RestController
public class ProxyController {
@Autowired
private RestClient restClient; // 自动应用SSRF防护
@GetMapping("/fetch")
public String fetchUrl(@RequestParam String url) {
// 如果url指向内网地址,自动被拦截
return restClient.get()
.uri(url)
.retrieve()
.body(String.class);
}
}
四、重磅三:OpenTelemetry和可观测性全面增强
Spring Boot 4.1在可观测性方面做了大量增强。
5.1 OTLP SDK导出器环境变量支持
Spring Boot 4.1现在支持通过标准环境变量配置OpenTelemetry协议(OTLP)导出器:
# application.yml 方式
spring:
telemetry:
otlp:
exporter:
endpoint: http://otel-collector:4318
timeout: 10s
# 或通过环境变量(官方推荐,更接近标准)
export OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
export OTEL_EXPORTER_OTLP_TIMEOUT=10000
这意味着配置方式更标准化,与OpenTelemetry社区的最佳实践保持一致。
5.2 Actuator端点增强:ProcessInfo
/actuator/info 端点现在提供了更丰富的进程信息:
- 进程运行时间(uptime)
- 启动时间(start time)
- 当前时间
- 时区、语言环境
- 工作目录
{
"process": {
"uptime": 3600000,
"startTime": "2026-06-10T10:00:00Z",
"currentTime": "2026-06-10T11:00:00Z",
"timezone": "Asia/Shanghai",
"locale": "zh_CN",
"workingDir": "/app"
}
}
5.3 RabbitMQ和Kafka观测约定自动配置
Spring Boot 4.1现在自动配置Spring AMQP和Spring Kafka的观测约定Bean,开箱即用:
spring:
rabbitmq:
observation:
enabled: true
kafka:
observation:
enabled: true
五、重磅四:数据访问层多项增强
6.1 懒加载数据源连接(Lazy DataSource Connection)
这是4.1中一个非常实用的优化。通过支持 LazyConnectionDataSourceProxy,数据源连接不再在应用启动时全部初始化,而是延迟到第一次实际使用时才建立。
spring:
datasource:
lazy: true # 开启懒加载数据源连接
效果:应用启动速度明显加快,尤其是在微服务架构中,每个服务启动时不需要等数据库连接池全部初始化完。
6.2 @Async方法的异步上下文传播
Spring Boot 4.1改进了 @Async 方法的异步上下文传播能力,确保异步任务执行时能正确传递安全上下文、事务上下文等。
6.3 Jackson配置属性增强
Spring Boot 4.1更新了Jackson的配置属性和自定义支持,提供了更细粒度的JSON序列化配置控制。
6.4 Derby进入废弃状态
Apache Derby项目已经宣布退休。Spring Boot 4.1中将Derby集成标记为deprecated:
DatabaseDriver.DERBY
EmbeddedDatabaseConnection.DERBY
如果你只是在测试里用嵌入式数据库,建议迁移到H2或HSQL。
六、重磅五:构建工具链持续优化
7.1 Maven Layers增强
Spring Boot 4.1对Maven的layers配置做了优化,让Docker镜像分层更精细,充分利用Docker的层缓存机制。
7.2 Gradle build-info增强
Gradle构建信息更加完善, bootBuildImage 支持通过命令行配置环境变量。
7.3 导入配置文件支持字符编码
在 spring.config.import 属性上可以指定字符编码值:
spring:
config:
import: "file:./config/application-utf8.yml?charset=UTF-8"
七、重磅六:Log4j文件轮转支持
Spring Boot 4.1为Log4j增加了文件轮转(File Rotation)支持:
logging:
log4j2:
file:
rotation:
strategy: size # 按大小轮转
max-size: 100MB
max-history: 30
compression: gz # 自动压缩历史日志
不用再手写log4j2.xml了,直接在application.yml里配置就行。
八、重磅七:Kotlin 2.3支持
Spring Boot 4.1升级了对Kotlin 2.3的支持,Kotlin开发者可以直接享用最新Kotlin语言特性。
九、重磅八:依赖生态全面升级
Spring Boot 4.1包含了所有来自Spring Boot 4.0.7的Bug修复、文档改进和安全修复。同时,整个依赖生态也进入新一轮版本:
- Spring Security 7.1.0
- Spring Data 2025.1.6
- Project Reactor 2025.0.6
- Jackson 3.1.4
- Testcontainers 2.0.5
- Spring gRPC 1.1.0
十、升级前必看:破坏性变化清单
有些小伙伴可能已经迫不及待想升级了,但升级前请务必看完这一节。
10.1 4.0废弃API开始移除
Spring Boot 4.0中标记为 @Deprecated 的类、方法和属性,在4.1中开始被移除。
升级前务必执行:
mvn -DskipTests compile
# 或
./gradlew compileJava
然后重点检查编译器输出的deprecated警告,确保所有废弃API都已经被替换。
10.2 jOOQ需要Java 21+
Spring Boot 4.1将jOOQ升级到3.20,而jOOQ 3.20要求Java 21或更高版本。
如果你使用了jOOQ,必须确认CI环境和运行时JDK都是Java 21+。
10.3 Derby废弃
如前面提到的,Derby集成已进入deprecated状态,建议迁移到H2或HSQL。
10.4 RabbitMQ / AMQP变化
Spring Boot 4.1中,RabbitMQ和AMQP相关能力有调整,建议谨慎评估,避免按过期资料盲目迁移。部分在M3中引入的Rabbit和AMQP变更将推迟到Spring Boot 4.2中交付。
十一、优缺点与适用场景
🌟 Spring Boot 4.1.0的优点
- gRPC官方支持:告别第三方Starter,官方统一配置、统一观测、统一异常处理
- 安全增强:SSRF防护在框架层解决,不用自己写Filter
- 可观测性升级:OTLP标准环境变量支持,与OpenTelemetry社区最佳实践对齐
- 启动性能优化:懒加载数据源连接,微服务启动速度更快
- 运维体验提升:Log4j文件轮转YAML配置,不用手写XML
- 生态同步:Spring Security 7.1、Kotlin 2.3等全家族同步升级
⚠️ Spring Boot 4.1.0的注意事项
- 破坏性变更:4.0废弃API开始移除,升级前必须清理
- jOOQ用户需要Java 21+:如果使用jOOQ,必须升级JDK
- Derby废弃:嵌入式测试数据库需要迁移到H2/HSQL
- 发布延迟:本应从5月发布,推迟到6月,说明版本变更需要谨慎评估
🎯 适用场景
| 场景 |
推荐程度 |
理由 |
| 新项目从4.0开始 |
强烈推荐 |
直接享受所有新特性,零迁移成本 |
| 已有4.0.x项目 |
推荐 |
增量升级,收益高,风险可控 |
| 使用gRPC的项目 |
强烈推荐 |
官方支持,告别第三方Starter |
| 安全敏感型项目 |
强烈推荐 |
SSRF防护开箱即用 |
| 使用jOOQ的项目 |
需评估 |
确认JDK已升级到21+ |
| 3.x及更早版本 |
需规划 |
需要先升级到4.0,再升级到4.1 |
总结
Spring Boot 4.1.0,是4.x时代从“代际大升级”走向“生产级完善”的关键一步。
它带来了什么?
- gRPC官方支持 —— 微服务通信多了一个官方选择
- SSRF防护 —— 安全这件事,框架帮你兜底
- 可观测性增强 —— OTLP标准化,跟得上云原生节奏
- 启动性能优化 —— 懒加载数据源,微服务启动更快
- Log4j文件轮转 —— 运维配置更简单
升级前要做什么?
- 清理4.0废弃API的调用
- 如果使用jOOQ,确认JDK是21+
- 如果使用Derby,迁移到H2/HSQL
- 谨慎评估RabbitMQ/AMQP相关变更
一句话总结:Spring Boot 4.1.0不是一次“推倒重来”的大版本,而是对4.0时代生产级能力的一次全面补齐。
gRPC官方支持、SSRF防护、OTLP标准化——每一个新特性,都直击生产环境的真实痛点。
如果你已经在用4.0,建议尽快规划升级;如果你还在3.x,是时候考虑向4.x迈进了。