springboot多版本管理

2023-11-17

达到的版本控制效果如下:

  1.api版本定义在url中,采用/api/项目名/pro/v4/接口名 的形式。

  2.api版本号通过注解进行定义。

  3.如果请求中不指定api版本号则返回最新版本。

  4.版本的自动适配,如果请求的api版本不存在,则返回低于请求版本的最新版本。

方式一

这篇博客提供了版本控制的几种方式,有参考性

从API版本控制说起,实现SpringBoot 一种版本控制的方式(上篇)_panaimin的博客-CSDN博客

方式二 SpringBoot API增加version版本号

SpringBoot API增加version版本号_一只懒惰的程序猿的博客-CSDN博客_springboot接口版本号

方式三

简单地使用继承:

版本1Controller.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("v1/")
public class Version1Controller {

    @ResponseBody
    @RequestMapping("foo")
    public String foo() {
        return "Foo 1";
    }

    @ResponseBody
    @RequestMapping("bar")
    public String bar() {
        return "bar 1";
    }
}

版本2Controller.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping({ "v2/", "latest/" })
public class Version2Controller extends Version1Controller {

    @Override
    @ResponseBody
    @RequestMapping("bar")
    public String bar() {
        return "bar 2";
    }

}

在这里,您将映射以下URL:

  • v1/foo -返回“ Foo 1”
  • v2/foo -返回“ Foo 1”-从版本1继承
  • v1/bar -返回“第1条”
  • v2/bar -返回“条2”-从版本1覆盖行为。
  • latest/foo - 如同 v2/foo
  • latest/bar - 如同 v2/bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot多版本管理 的相关文章

  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 为什么 java 编译器不报告 Intellij 中多播表达式的未经检查的强制转换警告?

    为什么下面的代码没有报告 Intellij IDEA 的未经检查的警告jdk 1 8 0 121自从Supplier
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 在java中实现你自己的阻塞队列

    我知道这个问题之前已经被问过并回答过很多次了 但我只是无法根据互联网上找到的示例找出窍门 例如this http tutorials jenkov com java concurrency blocking queues html or t
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • EnableFeignClients 使 Spring 无法加载上下文

    我只有一个 Feign 客户端 注释如下 FeignClient name billetClient fallback BilletClientFallback class url services billeterie url 这是我的配

随机推荐

  • (深度学习,机器学习)卷积神经网络

    1 卷积神经网络使深度学习卷土重来是因为卷积神经网络非常适合计算机视觉应用的模型 2 卷积神经网络基本原理包括 卷积算子 卷积的特征 卷积神经网络的典型结构 以及其中的卷积层和池化层 3 卷积提供了能够提升机器学习效果的的三种重要方法 系数
  • 考研机试题 -- DFS、模拟、递推、BFS

    目录 全排列 DFS 八皇后 DFS 反序输出 模拟 特殊乘法 模拟 众数 模拟 吃糖果 模拟 递推数列 递推 玛雅人的密码 BFS 全排列 DFS https www noobdream com DreamJudge Issue page
  • React16新特性

    React的16版本采用了MIT开源许可证 新增了一些特性 Error Boundary render方法新增返回类型 Portals 支持自定义DOM属性 setState传入null时不会再触发更新 更好的服务器端渲染 新的打包策略 1
  • vue 基于el-table实现多页多选、翻页回显过程

    近半年时间在接触vue写pc页面 文中内容即在实际的开发过程中遇到的实际问题 1 问题交代 在pc版的列表页面中 假设当前在列表的第一页 想要在当前页面选择几行数据 跳转到其他页面选择几行数据 选择后的数据页面展示为已勾选状态 经过跳转页面
  • VMware虚拟机安装及如何正确联网

    需要下载 1 VMware 12 第一个图和第二个图是借用其他网友的 本教程使用全部为VMware12 VMware 14同样适用于本文 2 Linux系统 CentOS 6 2 x86 64 bin DVD1 iso 1 安装vmware
  • LIRE代码剖析1——运行第一个图像检索

    lucene是一个开源的强大的索引工具 但是它仅限于文本索引 基于内容的图像检索 CBIR 要求我们利用图像的一些基本特征 如颜色纹理形状以及sift surf等等 搜索相似的图片 LIRE Lucene Image Retrieval 是
  • javascript_JavaScript走向成熟

    javascript 明年JavaScript将有20年的历史 从首次在Netscape浏览器中首次亮相开始算起 这是一门具有悠久历史的语言 并且从其早期开始就带来了很多负担 但是随着它离开少年时代的到来 我认为这是一种最终发展起来的语言
  • Nginx安装Lua

    Nginx安装Lua 1 安装Lua 两个二选一 yum install readline devel CentOS sudo apt get install libreadline dev Ubuntu sudo apt get inst
  • _this2.setState is not a function错误解决办法

    编写RN的小伙伴都知道setState是RN最常见的一个函数 但是这个最简单的函数却是经常报错 这一次我们就来解决 this2 setState is not a function这个错误 首先来看一下我的代码 这段代码就是发送一个请求 然
  • 【SpringBoot学习笔记(四)】之扫描Bean,依赖注入,Bean的生命周期,自定义Bean

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 扫描Bean 1 概述 之前 我们通过构造一个IOC容器来获取Bean 每个Bean对象都要添加 Bean注解 当Bean对象比较多的时候非常麻烦 这里我们使用 Componen
  • 解答:Java是如何实现跨平台运行的?

    Java有一个其他语言都没有特点 那就是跨平台 跨平台是什么意思呢 我们首先来看看平台是指什么 平台就是指我们计算机的操作系统 例如 Windows Linux Mac等操作系统 跨平台的意思就是Java程序 在一次编译后 在这些平台上都可
  • JAVA的内存模型

    Java的内存模型决定了一个线程对共享变量的写入何时对其他线程可见 Java内存模型定义了线程和主内存之间的抽象关系 具体如下 共享变量存储于主内存 计算机的RAM 之中 每个线程都可以访问 每个线程都有私有的工作内存或者称为本地内存 工作
  • ug10万能许可证一键安装_优胜UG4.0-UG12.0-许可证一键自动安装下载

    优胜UG许可证自动安装 NX4 0 NX12 0是优胜模具旗下相应模具软件的证书安装程序 压缩包里有对应的版本号选择 xp系统早年的32位也有对应msi exe验证文件 下方有详细说明 推荐给有需要的用户 ysugxkz nx4 0 nx1
  • Jenkins打包部署gitee项目至阿里云ECS服务器

    原文地址 Jenkins打包部署gitee项目至阿里云ECS服务器 BIGTREE whwtree com 所需插件 Git Parameter Plug In插件 Publish Over SSH插件 Gitee Plugin插件 Nod
  • 7-2 jmu-ds-最长数字序列 (20 分)

    输入一个字符串 求该字符串中最长连续数字序列出现的起始位置及其长度 输入格式 输入一个字符串 可包含空格 输出格式 输出内容 最长数字序列起始位置和长度空格隔开 输出尾部不能有空格 输入空串 输出 NULL 输入样例 123ab12345a
  • 【工具篇】IntelliJ IDEA 设置编码格式UTF-8

    系统 Win11 Idea IDEA 2022 3 2 Ultimate Edition 文件编码 Editor gt File Encodings 编译编码 Build Execution Deployment gt Complier g
  • 从微信授权登录到数据安全性的思考总结

    前置知识 微信授权登录过程和相关名词 access token code openid等 微信授权登录 大都是拉起微信授权页面 用户同意授权后 再跳到自己应用的绑定手机页面进行绑定手机的操作 绑定之后自动登录 会话就像不会过期一样 或者是过
  • 基于live555实现实时视频监控

    目录 1 所需软件 源码及下载地址 1 2安装软件及编译 1 2 1 安装Windows版的VLC
  • JavaScript全解析——循环结构语句

    循环控制 控制程序重复执行若干次相同或似的逻辑 理解并正确使用循环控制 需要搞清楚循环的3个要素 起始值 变化量 终止条件 起始值循环的起点 可以是 任意数据类型值 变化量是指 改变起始值的方式 终止条件 布尔类型值 它是循环停止的边界 w
  • springboot多版本管理

    达到的版本控制效果如下 1 api版本定义在url中 采用 api 项目名 pro v4 接口名 的形式 2 api版本号通过注解进行定义 3 如果请求中不指定api版本号则返回最新版本 4 版本的自动适配 如果请求的api版本不存在 则返