Spring Boot Admin 4.0.0 今天正式发布了。
去年 11 月 Spring Boot 4.0.0 发布后,大家都在等生态跟上。经过两个里程碑版本的迭代,Spring Boot 生态中最热门的监控工具终于完成了大版本升级。
Spring Boot Admin 是什么

先给不太熟悉的同学补个课。
Spring Boot Admin(下文简称 SBA)是开源的 Spring Boot 应用监控管理工具,GitHub 上有 12.8k Star。架构很简单:一个 Admin Server 加上若干 Admin Client。
Client 注册到 Server,Server 通过 Actuator 端点抓取各个应用的健康状况、JVM 指标、日志输出、环境配置、线程信息等数据,然后在一套 Web UI 上集中展示。
它干的事不复杂,但解决的问题很实际——你不用挨个登录每台服务器查应用状态了。在微服务架构下,手动巡检几十个服务实例这种事,想想就头大。
底层地基全换了
SBA 4.0.0 的底层框架全部升了一个大版本。直接看对比:
| 维度 | SBA 3.x | SBA 4.0.0 |
|---|---|---|
| 核心框架 | Spring Framework 6 | Spring Framework 7 |
| EE 标准 | Jakarta EE 10 | Jakarta EE 11(Servlet 6.1) |
| Java 基准 | Java 17 | Java 17(推荐 Java 25) |
| Kotlin | 1.9+ | 2.2+ |
| GraalVM | 23+ | 25+ |
这里面最值得说的是 Java 25 的支持。Java 25 是最新的 LTS 版本,虚拟线程对监控场景帮助很大。
一个典型场景:Admin Server 同时监控 200 个微服务实例,每个实例每隔 10 秒做一次健康检查和指标抓取。传统的平台线程模型下,这意味着大量线程被 I/O 阻塞占用。虚拟线程把这类等待操作的成本降到接近于零,同样的硬件能扛住更大的监控规模。
Java 17 仍然是最低要求。升不升 25 看你自己,但推荐升。
UI 层大翻新

PrimeUI 主题
SBA 4.0.0 引入 @primeuix/themes 作为新的主题方案,视觉上更统一了。几个明显的改进:
折叠面板做得更紧凑了,实例详情页一屏能看到更多信息。Wallboard 也重新设计过,大屏监控场景下色彩对比和布局更合理。还有一个小修复:线程转储表格在复杂多线程场景下的列宽溢出问题,终于解决了。这个 bug 之前确实烦人。
SBOM 可视化
SBOM(软件物料清单)这块也有改进:路径配置变成可选的了,没有数据时会弹出告警,图表加了图例说明。安全审计的人可以直接在 Admin 面板上看各微服务用了哪些依赖、有没有风险。
通信协议换血:RestClient 上位
这是 4.0.0 最大的架构变化,值得展开说。
客户端:告别 RestTemplate
SBA 客户端以前用 RestTemplate 或 WebClient 跟 Server 通信。现在只提供 RestClient 的自动配置。
RestClient 是 Spring Framework 6.1 引入的同步 HTTP 客户端,Spring Framework 7 又做了一轮打磨。它的定位很清楚:同步模型 + 流式 API。
说白了,它把 RestTemplate 的”好用”(同步、直觉)和 WebClient 的”好看”(链式调用、流式构建)结合到了一起。最关键的是,你不需要为了注册到 Admin Server 而引入整个 Project Reactor 的响应式依赖栈。
对于跑在 Servlet 容器上的传统 Spring Boot 应用来说,这就是最合适的 HTTP 客户端。
Maven 依赖本身没变:
1 | <dependency> |
底层的自动配置已经默默切换。如果你之前自定义了 RestTemplate 相关的 SBA 配置,升级时需要改成 RestClient 的方式。
空安全注解换了
如果你读过我之前写的那篇 JSpecify 文章,对这个变化应该不陌生。
SBA 4.0.0 跟着 Spring Framework 7,把所有空安全注解从 Spring 自家的换成了 JSpecify 标准:
1 | // 以前(SBA 3.x) |
一行 import 的变化。但这意味着 Spring 生态在空安全注解上终于跟 Java 社区对齐了,JSpecify 算是从 Spring 的”方言”变成了”普通话”。配合 NullAway 这类编译期检查工具,能在代码写完的那一刻就揪出潜在的空指针问题,不用等到生产环境半夜三点报警。
如果你有自定义的 SBA 扩展代码用到了 @Nullable,改一下 import 就行。IDE 全局替换,一分钟的事。
Jackson 3 适配
Jackson 从版本 2 升到了版本 3,包名从 com.fasterxml.jackson 变成了 tools.jackson。SBA 前后端的序列化都跟着改了。如果你有自定义的序列化逻辑,检查一下 import 路径。
踩坑预警:Jolokia 掉链子了
这个问题需要单独拎出来说。
Jolokia 目前不支持 Spring Boot 4。 SBA 团队只能把 Jolokia 降级到 2.1.0,这个版本只能提供基础功能。官方正在等 Jolokia 2.5.0 发布来解决兼容性问题。
如果你的监控流程重度依赖 Jolokia(比如通过 JMX over HTTP 远程调用 MBean 操作),升级前务必评估影响。只看基本指标的话,问题不大。
写在最后
SBA 4.0.0 本质上是一次”对齐升级”——Spring Boot 4 在前面跑了三个月,SBA 在后面追了上来。追赶的质量不错。客户端换了 RestClient 变得更轻量,空安全注解终于有了统一标准,UI 上修的也都是实际问题。
唯一的遗憾是 Jolokia 的兼容性拖了后腿。但这锅不在 SBA,只能等 Jolokia 自己赶工。
最后提一句:升级可以积极,但别急着跳。先把 3.5.x 吃稳了再往 4.0.0 挪。毕竟隔壁 Undertow 就是前车之鉴——跟不上节奏的结局,我们都看到了。