Java基础、中级、高级、架构面试资料

Spring Boot 4.1.0 发布,虚拟线程 + 连接池问题还在,原生支持 gRPC + SSRF

JAVA herman 19浏览
公告:“业余草”微信公众号 AI 中转站提供免费体验,点击链接 https://unity2.ai/register?ref=3XTnndN2 进行访问,支持 Claude、ChatGPT、Gemini 等最新模型!关注业余草微信公众号,添加作者微信:xttblog2!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

很早之前,就有人说 Spring 4.1.0 发布了,但其实都没有正式 GA。之前发布的都是预览候选版本,直到上周三才正式发布。

这次的 Spring 4.1.0 也是经过了好几个候选版本才正式 GA 的。之所以这样,除了修 bug 之外,有一部分原因是在等其它依赖库“发车”,这其中就包括 gRPC 原生支持等。

时间来到上周三,2026 年 6 月 10 日,Spring Boot 4.1.0 正式发布并上架 Maven Central。如果说 4.0 是 Spring 生态向 Jakarta EE 和 Java 21+ 的“大迁徙”,那么 4.1 则是一次面向生产细节的“深度补强”。

但是,之前社区里不少网友反馈的虚拟线程把连接池耗尽的问题官方并没有“解决”。官方的说法是,问题本质不是 Bug,而是设计冲突。官方的意思是,虚拟线程(Virtual Threads) 和 连接池(如 HikariCP) 之间的冲突,根源在于两者的设计假设不同。这不是 Spring Boot 的 Bug,而是 Java 平台特性与传统连接池模型的不匹配 🤣。

版本速览

Spring Boot 4.1.0 包含 大量改进、新特性和依赖升级,同时合并了 4.0.7 中的所有 Bug 修复、文档改进和安全补丁。根据官方博客,本次发布的核心亮点可以概括为下列表格中的五大方向。

方向关键内容
RPC 通信Spring gRPC 原生支持
安全防护HTTP Client SSRF 缓解(InetAddressFilter)
可观测性OpenTelemetry 增强、Micrometer 升级
数据与消息Jackson 配置升级、Lazy JDBC、Redis 注解监听器
运维与构建Log4j 日志轮转、Docker Compose 增强、Maven 分层优化

文章配图参见 https://mp.weixin.qq.com/s/TA9ejE7DvA4HEZU-eFFKVA

可以看到,这个大版本更新,Spring Boot 还是很有诚意的。

五大核心新特性深度解析

Spring gRPC 原生支持

在 4.1 之前,想在 Spring Boot 里用 gRPC,基本靠第三方 starter(如 grpc-spring-boot-starter)自己拼装。4.1 之后,gRPC 正式进入 Spring Boot 官方自动配置体系,也就是说 Spring Boot 现在官方正式下场搞 grpc 原生支持了。

官方新增了 3 个 grpc 模块,分别如下。

  • spring-boot-starter-grpc-server —— gRPC 服务端
  • spring-boot-starter-grpc-client —— gRPC 客户端
  • spring-boot-starter-grpc-test —— gRPC 测试支持

除了模块的不同,官方还推出了两种部署模式。

  1. 独立 Netty 服务,面向高性能内部 RPC 场景
  2. Servlet 集成,通过 HTTP/2 暴露 gRPC,兼容现有网关和负载均衡

然后在 grpc 异常处理方面,也得到了增强。

官方这次新增了 @GrpcAdvice 注解,统一处理 gRPC 服务端异常,告别散落在各处的 try-catch

@GrpcAdvice
public class GrpcExceptionHandler {
    @GrpcExceptionHandler
    public Status handleRuntimeException(RuntimeException e) {
        return Status.INTERNAL.withDescription(e.getMessage());
    }
}

尤其是微服务间强类型通信、多语言服务协作、高性能内部调用等场景下,这个注解就非常实用了。所以,后面一些内部系统间的调用,还在用 REST 做内部服务通信,gRPC 就很值得认真评估了。

HTTP Client SSRF 防护

SSRF(Server-Side Request Forgery)一直是 Web 应用的高危漏洞。常见的典型场景如,用户输入一个 URL,服务端代为请求,结果访问到了内网地址或云厂商元数据接口。

Spring Boot 4.1 将出站请求限制能力下沉到 HTTP Client 配置层,阻塞式和响应式客户端均可配置 InetAddressFilter

spring:
  http:
    client:
      filter:
        inet-address:
          allowed-addresses:
            - "10.0.0.0/8"
          blocked-addresses:
            - "169.254.169.254"  # AWS 元数据地址
            - "127.0.0.0/8"

通过类似上面这样的一个简单的 yaml 配置,就可以在安全配置层实现 ssrf 的“安全加固”。

值得注意的是,官方在 4.1.0 中修复了 InetAddressFilter.externalAddresses 未排除 RFC 6890 特殊地址的问题(#50668),升级后 SSRF 防护更加完整。

下面是几个常见的高危场景清单,供大家参考!

  • Webhook 回调
  • URL 预览 / 文件导入
  • 第三方图片抓取
  • AI Agent 工具调用外部 URL
  • 远程配置读取

OpenTelemetry 增强

Spring Boot 4.1 在可观测性方面持续发力,可观测性得到了“标准化推进”。

  • OpenTelemetry SDK 环境变量完整支持,容器化部署更干净,无需硬编码配置
  • Micrometer 1.17.0 + Micrometer Tracing 1.7.0,指标和链路追踪双升级
  • SSL 证书监控增强,SslMeterBinder 支持从 truststore 监控证书有效期

列举一个配置示例如下所示。

management:
  otlp:
    tracing:
      export:
        enabled: true
        url: http://localhost:4318/v1/traces
  tracing:
    sampling:
      probability: 1.0
    propagation:
      type: b3

Jackson 配置升级

Jackson 在 4.1 中获得了更细粒度的配置能力,从“能用”到“精细调优”。

spring:
  jackson:
    read:
      fail-on-unknown-properties: false
    write:
      dates-as-timestamps: true
    factory:
      # 细调 Jackson 读写约束

本次版本还新增了 Customizer 接口。

  • JsonFactoryBuilderCustomizer
  • CborFactoryBuilderCustomizer
  • XmlFactoryBuilderCustomizer

同时,自动配置的 JSON/XML/CBOR mapper 现在使用 HandlerInstantiator,可以从 Spring 容器中创建 handler 实例,方便自定义序列化逻辑。

Log4j 日志轮转

Spring Boot 4.1 原生支持 Log4j 的日志文件轮转,无需额外配置。对于生产环境中日志量大的应用,这意味着更简洁的依赖和更可控的磁盘使用。

开箱即用的 Log4j2 日志轮转,终于对齐了 Logback 了。切分 + 归档 + 自动清理全都默认自动支持。

30+ Bug 修复

本次 4.1.0 修复了 30+ 个 Bug,其中多项涉及 SSL/TLS 安全配置,直接影响生产安全。

列举部分中高等级的 bug 如下表格所示。

Issue问题描述风险等级
#50747MailSender 自动配置未启用主机名验证
#50745Artemis 嵌入式 broker 使用可预测的默认数据路径
#50700空 SSL bundle 时 Embedded LDAP 仍启用 SSL
#50668InetAddressFilter 未排除 RFC 6890 特殊地址
#50635SSL bundle 被覆盖为空字符串时仍启用 SSL
#50612RabbitMQ SSL 空 bundle 覆盖时仍启用 SSL

官方还特别强调,4.0.6 中修复的 CVE-2026-40970 和 CVE-2026-40971(Elasticsearch 和 RabbitMQ SSL bundle 自动配置禁用 TLS 主机名验证)也在 4.1.0 中合并了。如果还在用 4.0.x,建议尽快升级。

Spring Boot 4.1.0 升级了 50+ 项依赖,核心生态全面迭代。这一块每个版本都有,我就不单独写了。

还有一点需要注意,4.0.x 版本中,废弃的 API 在 4.1.0 中正式移除了。尤其是 3.x 或更早版本的迁移,4.0 中标记为 @Deprecated 的 API 在 4.1 中可能已被删除。升级前请务必清理所有废弃 API 的引用。

总结

Spring Boot 4.1.0 不是一个“只有大功能”的版本。它更像是一次面向生产细节的系统性补强。

  • gRPC 官方化,微服务通信的新选择
  • SSRF 防护配置化,安全加固更标准化
  • 可观测性深度集成,OpenTelemetry 走向成熟
  • 连接池懒加载,虚拟线程时代的性能优化
  • 日志轮转原生支持,运维体验提升

最后,需要说明的是连接池懒加载这功能,并没有解决虚拟线程把连接池耗尽的问题。官方的说法是,这不是一个 bug,只是一个已知的使用模式问题。官方的意思是,你们用的不对,不是 Spring Boot 的 bug。针对这一块的细节内容,我后面单独写吧。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Spring Boot 4.1.0 发布,虚拟线程 + 连接池问题还在,原生支持 gRPC + SSRF