Spring Boot 4.0 发布首个快照版本
Spring 官方已经发布了 Spring Boot 4.0 的快照版本,内置 Spring Framework 7.0。
Spring Framework 7.0 引入了对 API 版本控制的原生支持,为服务器端和客户端应用程序提供了强大的工具,以高效处理版本特定的路由和请求。
API 版本控制是现代 Web 开发中的关键实践,它允许开发者在不破坏现有客户端的情况下管理 API 的演进和变更,确保向后兼容性的同时引入新功能。
基础使用:RequestMapping version 属性
Spring Framework 7.0 在 @RequestMapping
及其变体注解中新增了 version
属性,让版本控制变得更加简洁和直观。
@RequestMapping @RestController publicclassDemoController { @GetMapping(version = "1") public String version1() { return"API Version 1.0.0"; } @GetMapping(version = "2") public String version2() { return"API Version 2.0.0"; } }
版本解析配置:ApiVersionConfigurer
通过实现 WebMvcConfigurer
接口并重写 configureApiVersioning
方法,可以自定义版本解析策略。
@Configuration publicclassWebConfigurationimplementsWebMvcConfigurer { @Override publicvoidconfigureApiVersioning(ApiVersionConfigurer configurer) { // 方式 1:使用请求参数(默认参数名为 "version") configurer.useRequestParam("version"); // 方式 2:使用请求头 // configurer.useRequestHeader("API-Version"); // 方式 3:使用路径变量 // configurer.usePathVariable("version"); } }
常见的版本控制策略
1. 请求参数方式:?version=1
2. 请求头方式:API-Version: 1
3. 路径变量方式:/api/v1/users
4. Accept 头方式:Accept: application/vnd.api+json;version=1
调用测试
使用请求参数进行版本控制的测试示例:
# 调用版本 1 的 API curl "http://localhost:8080/?version=1" # 输出:API Version 1.0.0 # 调用版本 2 的 API curl "http://localhost:8080/?version=2" # 输出:API Version 2.0.0 # 不指定版本(可能返回默认版本或错误) curl "http://localhost:8080/"
高级配置:自定义版本解析器
对于复杂的业务场景,可以实现自定义的版本解析逻辑:
@Configuration publicclassWebConfigurationimplementsWebMvcConfigurer { @Override publicvoidconfigureApiVersioning(ApiVersionConfigurer configurer) { configurer.useVersionResolver(newApiVersionResolver() { @Override public@Nullable String resolveVersion(HttpServletRequest request) { // 示例 1:从用户代理字符串解析版本 StringuserAgent= request.getHeader("User-Agent"); if (userAgent != null && userAgent.contains("mobile")) { return"mobile"; } // 示例 2:基于客户端 IP 或其他业务规则 StringclientIp= getClientIp(request); if (isTestEnvironment(clientIp)) { return"beta"; } // 默认版本 return"1"; } }); } }
总结
• 1.用户发起请求,进入 RequestMappingHandlerMapping,用于确定应该调用哪个 Controller 方法。
• 2.RequestMappingHandlerMapping 调用 ApiVersionStrategy,提取请求中的 API 版本号。
• 3.返回 API 版本号后,进行初步筛选符合条件的 Controller 方法。
• 4.选择出最佳匹配的 Controller 方法。
通过 Spring Boot 4.0 的原生版本控制支持,开发者可以更优雅地管理 API 的演进,提升系统的可维护性和用户体验。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Electron 36.3.2 发布,跨平台桌面应用开发工具
Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台的桌面应用程序。它基于 Node.js 和 Chromium,被 Atom 编辑器和许多其他应用程序使用。Electron 兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 Electron v36.3.2更新内容如下: 修复 修复了受保护的透明窗口在可见性改变后不适当地显示标题栏的问题。#47264 修复 macOS 对话框中 directory selection 的回归问题。#47278 其他变化 将 Chromium 更新至 136.0.7103.115。#47215 更新说明:https://github.com/electron/electron/releases/tag/v36.3.2
- 下一篇
VLOOK 29!上新「页签组、段落」排版 & 交叉引用,实用好用的 Markdown 主题插件
VLOOK™是针对Typora(跨平台 Markdown 编辑器)的主题包和增强插件(针对导出的 HTML 文件),旨在与众 Markdown 粉共创 Markdown 的自动化排版 2.0,在保持 Markdown 简洁性的基础上,让编辑、阅读 Markdown 文档更实用,也更愉悦。 VLOOK™属于开源软件(遵从MIT License),也是OSCHINA 开源中国推荐的国产开源产品、Typora 的首个增强插件。 VLOOK™的所有特性清单→一键了解(备用链接) — What's 🎉 NEW — 🎉 页签组排版 对指定连续的内容自动以「页签组」方式进行排版 支持:表格、插图、引用块、代码块、视频、音频、公式、GitHub Style Alert 提供多种样式选择(通过订阅定制主题开启)…详细 ›› 🎉 段落排版 整段内容设置为粗体、下划线、高亮可启用更个性样式 VLOOK 内置的主题均已启用并配置了不同示范性样式 提供多种样式选择(通过订阅定制主题开启)…详细 ››  🎉 多文档组织 重构文库功能,可以更好地对多文档、多外部链接进行组织和显示…详细 ›› 🎉 题注与...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS关闭SELinux安全模块
- CentOS7,8上快速安装Gitea,搭建Git服务器