Spring Boot 4.0 新特性全解:基线升级、Web 生态换代、API 版本治理、声明式 HTTP Client

springboot4.0 已经正式发布,本文旨在梳理 Spring Boot 4.0 的“新增与变化点”,聚焦对工程落地有直接影响的内容。

一、重点特性升级

1. 平台基线升级:对齐 Spring Framework 7 与 Servlet 6.1 / Jakarta EE 11

Spring Boot 4.0 的首要变化是平台基线整体前移:

  • Spring Framework 基线升级到 7.0.x
  • Servlet 基线升级到 6.1(Jakarta EE 11)
  • 内嵌容器主线对齐到 Tomcat 11 / Jetty 12.1(与 Servlet 6.1 匹配)

影响:

  • 任何与 jakarta.*、Servlet API、容器适配相关的依赖,需要升级到兼容 Servlet 6.1 的版本线
  • 自定义 Filter/Servlet、以及第三方组件(网关插件、监控探针、老旧 SDK)需要回归验证

2. Starter 结构调整:Web 服务器从“隐式默认”变成“显式可插拔”

Boot 4.0 对 Web 服务器 starter 做了结构性调整:

  • spring-boot-starter-web / spring-boot-starter-webflux 不再隐式绑定某个服务器实现
  • 新增更清晰的容器 starter(按 Servlet / Reactive 维度区分):
    • spring-boot-starter-web-server-tomcat
    • spring-boot-starter-web-server-jetty
    • spring-boot-starter-reactive-web-server-tomcat
    • spring-boot-starter-reactive-web-server-jetty

影响:

  • 需要明确选择容器实现(Tomcat 或 Jetty),依赖图更清晰、更可控
  • 对“平台统一容器版本”的团队更友好(便于强制收敛)

3. Undertow 移除:Servlet 6.1 兼容性导致的硬性变化

Boot 4.0 移除了 Undertow 的内嵌支持,原因是 Undertow 目前不支持 Servlet 6.1。

工程影响:

  • 依赖 Undertow 的项目需要迁移到 Tomcat 或 Jetty
  • 如果团队强依赖 Undertow(性能、特性、生态),需要评估自行维护适配链路的成本(通常不建议)

4. API Versioning:框架内建的版本治理能力

Boot 4.0 把 API 版本治理提升为框架能力(不再只是网关约定或自研技巧):

  • 支持在 Spring MVC / WebFlux 中声明与解析版本
  • 支持默认版本、版本解析器、版本格式解析、废弃策略处理等扩展点

4.1 Header 取版本(示例)

spring.mvc.apiversion.default=1.0.0 spring.mvc.apiversion.use.header=X-Version 

4.2 Controller 上声明版本(示意)

具体注解/扩展点以 Spring Boot 4.0 最终 API 为准;实际项目建议统一版本策略(Header/Path/Query 选其一)。
@GetMapping("/users")@ApiVersion("1.0.0")publicList<UserDTO>v1(){...}@GetMapping("/users")@ApiVersion("2.0.0")publicList<UserDTO>v2(){...}

建议:

  • 对外 API/开放平台建议尽早统一版本来源(Header 或 Path),避免“网关一套、应用一套”
  • 版本废弃需要配套:文档标注、灰度周期、监控(旧版本调用量)、以及下线策略

5. 声明式 HTTP Client:HTTP Service Clients 一等公民化

Boot 4.0 强化了“接口式 HTTP Client”的工程化体验:

  • 通过注解接口描述外部服务契约(而不是手工拼 URL)
  • 支持按组配置 base-url、拦截器、超时等
  • 适合多环境、多域名、微服务间调用治理

5.1 定义接口(示例)

@HttpExchangepublicinterfaceBillingClient{@GetExchange("/api/bills/{id}")BillDTOget(@PathVariableLong id);}

5.2 扫描导入

@SpringBootApplication@ImportHttpServices(basePackages ="com.example.clients")publicclassApp{}

5.3 按组配置 base-url(示例)

spring.http.serviceclient.billing.base-url=https://billing.example.com 

建议:

  • 对外部依赖调用必须配套:超时、重试、熔断、限流与降级(建议与 Resilience4j 等组合)
  • 调用链路建议统一透传 traceId,以便端到端排障

6. 可观测性:OpenTelemetry Starter 纳入官方阵列

Boot 4.0 新增 spring-boot-starter-opentelemetry,用于更标准地接入 OpenTelemetry 相关能力。

工程建议:

  • 统一团队的 tracing/metrics/logs 采集入口,避免各服务“各配各的”
  • 与 Actuator、日志(MDC/traceId)、以及 OTLP exporter 等形成一致的观测口径

7. Kotlin 生态:Kotlin Serialization Starter

Boot 4.0 新增 spring-boot-starter-kotlin-serialization,为 Kotlin 项目提供更明确的序列化路径。


8. 测试与客户端工具:RestTestClient、JmsClient 等进入标准工具箱

Boot 4.0 与 Spring Framework 7 同步推动部分现代客户端能力:

  • RestTestClient:更适合 REST 交互测试的工具能力
  • JmsClient:更现代化的 JMS 客户端入口

9. 关键依赖代际升级:Jackson 3 / Hibernate 7.1 / Spring Data 2026 等

Boot 4.0 的“新特性”很大一部分来自关键依赖的大代际升级:

  • Jackson 3.x
  • Hibernate 7.1
  • Spring Data 2026
  • Spring Batch 6.0

影响(必须回归验证):

  • JSON 序列化行为与模块兼容(尤其是自定义序列化、时间类型、泛型/多态)
  • JPA/Hibernate 配置项、方言行为、DDL 生成、懒加载与性能策略
  • Spring Data Repository 行为变化与依赖矩阵变化
  • 第三方 starter/SDK 的兼容窗口(建议建立依赖兼容清单)

二、. Boot 4.0 vs Boot 3.x:升级关注点对比

建议升级路径:先收敛到最新的 Boot 3.5.x,再评估升到 4.0。
维度Boot 3.xBoot 4.0
Spring Framework 基线6.x7.0.x
Servlet/Jakarta 基线Servlet 6.0 / Jakarta EE 10(主线)Servlet 6.1 / Jakarta EE 11
Web starter 结构starter-web 默认绑定容器的习惯更明显Web 服务器 starter 显式拆分,更可插拔
Undertow常见可用选择之一移除(Servlet 6.1 不支持)
API 版本治理多靠网关/自研框架级 API Versioning
HTTP 调用方式RestTemplate/WebClient + 手写封装声明式 HTTP Service Clients + 分组配置
可观测性OTel 依赖通常手动组合新增 OTel starter,标准化更强
关键依赖代际Jackson 2 / Hibernate 6 等Jackson 3 / Hibernate 7.1 / Spring Data 2026 等

三、. 升级落地建议

  1. 先到 3.5.x 再升 4.0:减少迁移跨度
  2. 先清理 deprecated:避免升级后集中爆炸
  3. 先补齐测试与观测基线:没有测试/指标就无法判断升级收益
  4. 重点回归:容器/Servlet、序列化、JPA/Hibernate、Actuator 端点与安全策略
  5. 灰度发布 + 回滚预案:按“升级项目”推进,而不是“改版本号”

四、总结

本文介绍了springboot4.0升级的重点内容,及项目升级建议。

Read more

医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用

医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用

一、引言 1.1 研究背景与意义 在医疗体系中,高效精准的药品配送是保障医疗服务质量和患者安全的关键环节。随着医疗技术的不断进步和医疗需求的日益增长,传统的人工送药方式逐渐暴露出诸多弊端,如配送效率低下、易受人为因素干扰导致错误率上升、人力成本高昂等。特别是在大型综合医院,科室众多、布局复杂,药品配送路径长且需经过多个区域,这使得人工送药的难度和工作量大幅增加,进而影响医疗服务的及时性和准确性。 医疗送药机器人的出现为解决这些问题提供了新的途径。它能够在医院复杂的环境中自主导航,按照预设的路径和时间准确地将药品送达指定地点,极大地提高了药品配送的效率和准确性。通过自动化的配送流程,送药机器人可有效减少人为因素造成的错误,如拿错药、送错药等情况,从而保障患者的用药安全。同时,送药机器人的应用还能将药师和护士从繁琐的药品配送工作中解放出来,使其能够将更多的时间和精力投入到临床药学服务和患者护理工作中,提高医疗服务的整体质量。 “空间拓扑优化 + 动态算法决策 + 多级容错控制” 三重链式编程技术的提出,为医疗送药机器人性能的进一步提升带来了革命性的突破。空间拓扑优化技术能够对医院的

Windows下安装运用高效轻量本地龙虾机器人ZeroClaw

Windows下安装运用高效轻量本地龙虾机器人ZeroClaw

常用操作系统Windows下,本地安装、配置和使用--龙虾机器人,用过了略显复杂的原装OpenClaw,也用过了易用性逐渐提升的国产替代CoPaw、AutoClaw、WorkBuddy,欲转向性价比更高的“品牌”,几经对比,目光锁定在了ZeroClaw。下面是Windows下,安装、配置和使用ZeroClaw的过程汇总和心得体会。盛传ZeroClaw,不但开源免费、可以本地部署,而且体积小、运行高效,跟我一起体验,看其到底有没有。 1 组合工效 图1 ZeroClaw应用组合工效展现图 2 必备基础 2.1 大模型LLM 通用经济起见,选用硅基流动Siliconflow大模型平台及其下的deepseek-ai/DeepSeek-V3.2,需要进入硅基流动网站注册登录并创建相应的API密钥,如图2所示。 图2 SiliconflowAPI密钥创建及其大模型选择组合截图 2.2 机器人Robot 通用经济起见,选用腾迅的QQ机器人。进入腾迅QQ开放平台,注册登录,新建QQ机器人并创建机器人AppID与机器人密钥,在“开发”下选择相应的常用“回调配置”

Jetson + OpenClaw + 飞书机器人:构建一个让边缘设备成为 AI Agent 助手的远程交互系统

Jetson + OpenClaw + 飞书机器人:构建一个让边缘设备成为 AI Agent 助手的远程交互系统

1. 背景 最近我希望在 Jetson 上部署一个本地 Openclaw,并通过飞书机器人进行远程交互,从而让闲置的边缘设备秒变我的高级AI助手。整体目标很简单: * 在 Jetson 上运行 OpenClaw * 接入自己的模型 API(我使用的是阿里的Coding Plan) * 通过飞书群聊 @机器人 或者私聊机器人直接调用本地 Agent 最终希望实现这样的工作流: Feishu Group ↓ Feishu Bot ↓ OpenClaw Gateway (Jetson) ↓ Agent ↓ LLM API ↓ 返回飞书消息 这篇文章记录一下从源码部署 OpenClaw,到接通飞书机器人的完整过程,以及过程中踩到的几个关键坑。 2. 环境信息 本文使用环境如下: Jetson 环境 uname -a # 输出 Linux agx229-desktop 5.10.216-tegra

具身智能与视觉:机器人如何“看懂”世界?

具身智能与视觉:机器人如何“看懂”世界?

具身智能与视觉:机器人如何“看懂”世界? * 前言 * 一、具身智能的奥秘探索 * 1.1 具身智能的深度剖析 * 1.2 具身智能的发展脉络梳理 * 二、视觉:机器人感知世界的 “慧眼” * 2.1 机器人视觉系统的架构解析 * 2.2 计算机视觉技术的关键支撑 * 三、机器人如何借助视觉 “看懂” 世界 * 3.1 视觉感知与环境理解 * 3.2 视觉引导下的决策与行动 * 3.3 视觉与其他传感器的融合 * 四、具身智能中视觉技术的挑战 * 4.1 复杂环境下的视觉鲁棒性 * 4.2 实时性与计算资源的平衡 * 4.3 语义理解与常识推理的欠缺 * 五、具身智能视觉技术的未来发展趋势 * 5.