【发布时间】:2020-07-14 22:13:56
【问题描述】:
需要修改 Spring Boot 微服务的现有合约(请求/响应负载),这本质上是重大更改(不向后兼容)。并且必须在一段时间内支持这两个版本的合同 - 直到所有客户端都将自己升级到新版本。
为了实现这一点,已决定使用 URL 版本控制策略(如 /v1/{resource} 和 /v2/{resource})。
现在,问题是在代码中实现这一点的最佳方式是什么? 以下是两个建议的解决方案
-
分支出版本一 (/v1) 代码并单独维护它,直到支持此版本。 这实质上意味着从 master 中删除分支并从此分支中构建/部署,并维护同一服务的两个实例,每个实例分别支持 v1 和 v2 版本。
在同一个 master 分支中,引入一个单独的包(如 service.api.v2.request)并将所有 api 有效负载请求/响应类放入其中并引入一个新端点控制器支持 (/v2)。这种方法使单个实例能够支持这两个版本。
以上哪一个是更好的方法?或者是否有任何其他标准/更好的选择来实现这一目标? Spring Boot 是否为此类需求提供开箱即用的支持?
【问题讨论】:
标签: java spring-boot microservices