10 个使用 Spring Boot 4 的开发技巧,太惊艳了!
大家好我是Java1234_小锋老师。Spring Boot 4 在 2025 年底正式发布底层换成了 Spring Framework 7很多以前要「自己造轮子」的事情现在框架直接帮你做好了。这篇文章挑了 10 个我觉得最实用、最容易上手的技巧每个都配了能直接抄的 demo看完就能在项目里试。技巧 1API 版本管理终于不用自己写拦截器了以前做 REST 接口版本常见做法是路径里加/v1、/v2或者自己写个拦截器读 Header。Spring Boot 4 把这件事做成了「一等公民」——你在GetMapping上标注版本号就行框架负责路由和匹配。第一步开启版本解析策略ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{OverridepublicvoidconfigureApiVersioning(ApiVersionConfigurerconfigurer){configurer.useRequestHeader(X-API-Version)// 从请求头读取版本号.addSupportedVersions(1,2).setDefaultVersion(1);// 没传时默认 v1}}也可以用application.yml做基础配置复杂场景仍建议 Java 配置spring:mvc:apiversion:default:1supported:1,2use:header:X-API-Version第二步在映射注解上加version属性RestControllerRequestMapping(/api/users)publicclassUserController{// v1 版本返回简单信息GetMapping(/{id})publicUserV1getUserV1(PathVariableLongid){returnnewUserV1(id,张三);}// v2 版本多了邮箱字段GetMapping(value/{id},version2)publicUserV2getUserV2(PathVariableLongid){returnnewUserV2(id,张三,zhangsanexample.com);}}客户端调用时带上X-API-Version: 2就能拿到 v2 的数据。同一个 URL不同版本代码结构清晰不用再维护一堆if-else。技巧 2HTTP Service Client写个接口就能调远程服务Feign 好用但有时候只想快速调一个外部 HTTP 接口写一堆配置又嫌麻烦。Spring Boot 4 的HTTP Service Client思路很简单定义一个 Java 接口加上注解Spring 自动帮你生成实现类。// 1. 定义接口HttpExchange(urlhttps://api.example.com)publicinterfaceWeatherService{GetExchange(/weather/{city})WeatherResponsegetWeather(PathVariableStringcity);}// 2. 启动类或配置类上启用SpringBootApplicationImportHttpServices(basePackagescom.example.client)publicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}// 3. 像普通 Bean 一样注入使用ServicepublicclassReportService{privatefinalWeatherServiceweatherService;publicReportService(WeatherServiceweatherService){this.weatherServiceweatherService;}publicStringtodayWeather(Stringcity){returnweatherService.getWeather(city).description();}}超时、Base URL 等还可以在application.yml里统一配spring:http:client:service:weather-service:base-url:https://api.example.comconnect-timeout:3sread-timeout:10s以前要写RestTemplate或WebClient配置类现在一个接口搞定特别适合对接第三方 API 的场景。技巧 3虚拟线程开一行配置HTTP 客户端也跟着受益Java 21 引入虚拟线程后Spring Boot 3.2 就能开启。到了 Spring Boot 4不光 Web 请求走虚拟线程JDK 自带的 HTTP 客户端也会自动跟着用虚拟线程不用你再手动给HttpClient.Builder塞Executor了。# application.ymlspring:threads:virtual:enabled:true就这么一行。开启后Tomcat 处理请求用虚拟线程你通过 HTTP Service Client 或 RestClient 发出去的出站请求也会复用同一套线程模型。适合 I/O 密集型的 Web 应用——比如一个接口要调三个外部服务再汇总结果以前线程池容易打满现在成本低很多。当然CPU 密集计算多的场景还是要评估虚拟线程不是万能药。技巧 4RestTestClient接口测试写法终于统一了写 Spring Boot 测试的同学大概都经历过MockMvc写起来啰嗦WebTestClient又带着响应式那套概念。Spring Boot 4 新推的RestTestClient把两者优点合在一起了——链式调用、写法流畅还不用引入 WebFlux。切片测试MockMvc 模式SpringBootTestAutoConfigureMockMvcclassUserControllerTest{AutowiredRestTestClientclient;TestvoidshouldReturnUser(){client.get().uri(/api/users/1).header(X-API-Version,1).exchange().expectStatus().isOk().expectBody().jsonPath($.name).isEqualTo(张三);}}集成测试真实端口模式SpringBootTest(webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)classUserIntegrationTest{AutowiredRestTestClientclient;TestvoidshouldWorkOnRealServer(){client.get().uri(/api/users/1).exchange().expectStatus().isOk();}}同一个RestTestClientMock 和真端口两种模式切换方便测试代码读起来也顺很多。技巧 5OpenTelemetry Starter监控链路开箱即用可观测性Metrics Traces以前要引 Micrometer、OpenTelemetry SDK、各种 Exporter配半天。Spring Boot 4 加了专用 Starter!-- pom.xml --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-opentelemetry/artifactId/dependency# application.ymlmanagement:opentelemetry:tracing:export:otlp:endpoint:http://localhost:4318/v1/tracestracing:export:enabled:true加上依赖、配好 OTLP 地址Trace 就自动往 Jaeger、Tempo 这类后端送了。对于新项目来说第一天就把链路追踪接上后面排查慢接口会省很多力气。技巧 6API 废弃提醒自动往响应头里塞 Sunset 信息接口要下线最怕客户端不知道还在调。Spring Boot 4 内置了基于 RFC 标准的废弃处理——你在配置里声明某个版本即将废弃框架会在响应头里自动加上Deprecation、Sunset、Link等信息提醒调用方赶紧迁移。ConfigurationpublicclassApiDeprecationConfigimplementsWebMvcConfigurer{OverridepublicvoidconfigureApiVersioning(ApiVersionConfigurerconfigurer){StandardApiVersionDeprecationHandlerhandlernewStandardApiVersionDeprecationHandler();// 标记 v1 即将废弃并设置下线时间handler.configureVersion(1).setDeprecationDate(ZonedDateTime.parse(2026-06-01T00:00:00Z)).setSunsetDate(ZonedDateTime.parse(2026-12-31T00:00:00Z)).setSunsetLink(URI.create(https://docs.example.com/migrate-v2));configurer.useRequestHeader(X-API-Version).addSupportedVersions(1,2).setDeprecationHandler(handler);}}配合 Controller 里的版本映射GetMapping(/orders)publicListOrderlistOrdersV1(){...}GetMapping(value/orders,version2)publicListOrderV2listOrdersV2(){...}客户端收到 v1 响应后看 Header 就知道接口在 2026 年底要停用了。以前这类逻辑得自己写 Filter现在配置几行就搞定对前后端协作特别友好。技巧 7TaskDecorator 支持多个异步任务装饰更灵活项目里如果有Async或定时任务经常需要在任务执行前后做一些通用操作——比如传递 MDC 日志上下文、注入 TraceId。以前多个TaskDecorator只能留一个Spring Boot 4 改成自动合并多个装饰器。ComponentOrder(1)publicclassMdcTaskDecoratorimplementsTaskDecorator{OverridepublicRunnabledecorate(Runnablerunnable){MapString,StringcontextMDC.getCopyOfContextMap();return()-{if(context!null)MDC.setContextMap(context);try{runnable.run();}finally{MDC.clear();}};}}ComponentOrder(2)publicclassTraceTaskDecoratorimplementsTaskDecorator{OverridepublicRunnabledecorate(Runnablerunnable){StringtraceIdTraceContext.current().traceId();return()-{MDC.put(traceId,traceId);runnable.run();};}}两个装饰器都注册成 Bean框架按Order顺序串起来执行。异步日志终于能带上完整链路了排查线上问题不再「断档」。技巧 8Redis 主从静态节点配置一行搞定用 Lettuce 连接 Redis 主从架构时以前要在代码里写RedisStaticMasterReplicaConfiguration。Spring Boot 4 支持直接在配置文件里声明节点spring:data:redis:masterreplica:nodes:-192.168.1.10:6379# 主节点-192.168.1.11:6379# 从节点-192.168.1.12:6379适合节点固定、不走 Redis Sentinel 或 Cluster 的场景。配置简洁也减少了启动类里的样板代码。技巧 9控制台日志可以单独关掉排查问题更方便有时候本地调试只想看文件日志或者跑测试时控制台输出太吵。Spring Boot 4 新增了logging:console:enabled:false# 关闭控制台输出文件日志照常写这个小开关看着不起眼但在 CI 环境、Docker 容器里跑测试时很实用——日志走文件或日志采集系统控制台干干净净。技巧 10升级有套路别跳过 Spring Boot 3.5最后这条不算「写代码技巧」但真的很重要从 3.x 直接跳到 4.0坑会比想象中多。官方建议的路径是Spring Boot 3.4 及以下 → 先升到 3.5 → 再升到 4.0Spring Boot 4 变动不少Jackson 2 标记废弃、Jackson 3 成为默认部分配置项改名比如management.tracing.enabled→management.tracing.export.enabledJakarta EE 11 基线等等。升级时可以对照官方 Migration Guide逐项改。急不得但值得——4.0 上面这些新能力用上了真的会感叹「早该这样了」。写在最后Spring Boot 4 不是那种「换个版本号、修几个 bug」的小更新。API 版本管理、HTTP Service Client、RestTestClient、OpenTelemetry Starter……这些都是日常开发里真的会用到的东西。建议做法新建一个小 demo 项目把本文技巧 1、2、4 先跑起来感受一下写法上的变化。等有新项目或者老项目稳定期再规划完整迁移。如果你已经在用 Spring Boot 4欢迎在评论区分享你觉得最「惊艳」的那个特性——每个人的业务场景不同好用的点也可能不一样。

相关新闻

2026 AI 标书工具综合排名与技术评测:5 款主流产品分梯队解析

2026 AI 标书工具综合排名与技术评测:5 款主流产品分梯队解析

前言随着招投标领域智能化政策落地加速,AI 标书工具已从尝鲜属性转向生产力工具属性。但当前市场产品技术路线分化显著,从通用大模型套壳、模板化填充到垂直全流程方案,能力差距悬殊,大量营销噱头也让企业选型容易陷入认知误区。为…

2026/6/29 23:32:56阅读更多 →
跨平台获取macOS系统镜像:告别苹果硬件的限制

跨平台获取macOS系统镜像:告别苹果硬件的限制

跨平台获取macOS系统镜像:告别苹果硬件的限制 【免费下载链接】gibMacOS Py2/py3 script that can download macOS components direct from Apple 项目地址: https://gitcode.com/gh_mirrors/gi/gibMacOS 你是否曾经需要在Windows或Linux电脑上获取macOS系统…

2026/6/30 23:40:29阅读更多 →
3步搞定!免费开源的微信聊天记录永久备份工具WeChatExporter终极指南

3步搞定!免费开源的微信聊天记录永久备份工具WeChatExporter终极指南

3步搞定!免费开源的微信聊天记录永久备份工具WeChatExporter终极指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心手机丢失后,那些…

2026/7/1 1:48:27阅读更多 →
2026 在上海如何找一家专业又靠谱的小程序定制开发公司

2026 在上海如何找一家专业又靠谱的小程序定制开发公司

现在上海做线下门店、小型商贸、本地服务、初创线上平台的老板基本都有做小程序的想法,不管是门店点餐、线上商城、预约服务还是商户入驻平台,小程序都是低成本拉私域、做线上成交的工具,但很多人第一次接触定制开发,很容易踩各种…

2026/7/1 2:06:57阅读更多 →
北京心商科技发布GEO优化产品 助力企业合规营销

北京心商科技发布GEO优化产品 助力企业合规营销

2026年6月30日,北京心商科技有限公司在京正式发布新一代生成式引擎优化(GEO)产品。该产品经过长达8个月的内部测试,已成功服务公牛集团、广联达、齐鲁制药等多家行业头部企业,技术内核则源自烟台创想企服数字科技研发的…

2026/7/1 2:06:57阅读更多 →
AI Agent 新概念: Loop Engineering 是什么? 一篇文章讲清楚定义、组成、应用场景

AI Agent 新概念: Loop Engineering 是什么? 一篇文章讲清楚定义、组成、应用场景

最近 AI 圈有个新词挺火,叫 Loop Engineering,也就是 “循环工程”,本篇文章来讲一讲,带你搞清到底什么是Loop Engineering。 起因是两句话,Claude Code 的负责人 Boris Cherny 说,他已经不怎么给 Claude …

2026/7/1 2:06:57阅读更多 →
5个技巧让Windows多显示器亮度调节更高效:Monitorian完全指南

5个技巧让Windows多显示器亮度调节更高效:Monitorian完全指南

5个技巧让Windows多显示器亮度调节更高效:Monitorian完全指南 【免费下载链接】Monitorian A Windows desktop tool to adjust the brightness of multiple monitors with ease 项目地址: https://gitcode.com/gh_mirrors/mo/Monitorian Monitorian是一款专为…

2026/7/1 2:06:57阅读更多 →
Free-For-Dev 资源实战:零成本构建高效开发工作流

Free-For-Dev 资源实战:零成本构建高效开发工作流

很多开发者在启动新项目时,往往被“基础设施成本”劝退。租服务器、买域名、配置数据库、搭建监控,这一套流程走下来,还没写几行核心代码,预算就已经烧掉大半。对于初创团队或个人开发者而言,这种重资产启动模式不仅资…

2026/7/1 2:06:57阅读更多 →
当 AI Agent 学会长出免疫系统:从城堡防御到细胞防御的范式转换

当 AI Agent 学会长出免疫系统:从城堡防御到细胞防御的范式转换

一个被忽视的事实:你的 Agent 没有免疫系统 想象你刚部署了一个很能干的 AI Agent。它能读写文件、调用 API、管理日程、协调其他 Agent。你给它配了最好的基座模型(Claude Opus 4.6),精心写了 system prompt,做了 RLHF 对齐,加了沙箱和防火墙。 上线三天,有人往它的记…

2026/7/1 2:01:57阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/30 4:03:30阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/30 4:36:27阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →