Spring 云配置服务器 - 占位符标签
Spring Cloud Config Server - Placeholder Label
我使用 Spring Boot 开发了一个微服务。此服务正在使用 Spring 云配置服务器获取属性。该微服务接受 header 中的版本,并根据版本执行相应的功能。在我的 github 仓库中,我有 2 个分支,每个版本 1 个。该服务通常将以下信息发送到配置服务器以获取属性 -
application-name + 配置文件 + 标签
有没有办法在我的 .yml 文件中用占位符代替标签?如果我在 header else v2.
中看到 v1,我希望将标签动态设置为 v1
编辑:
我在本文档 (http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html) 的 "Placeholders in Git URI" 部分看到了对占位符的引用,但是我不确定如何从传入请求中动态替换值
spring-cloud-config-server 使多个 REST API 可用,允许直接查询 属性 文件:
$ hostname:port/{label}/{name}-{profiles}.properties]
您可以动态使用您选择的任何标签,只要它与 git 上的现有标签匹配即可。
例如,要检索 application.properties
,在 git 中标记为 v1
:
$ http://${hostname}:${port}/v1/application.properties
配置服务器 REST API:
- /{名称}/{配置文件}/{标签:.*
- /{label}/{name}-{profiles}.properties
- /{姓名}-{个人资料}。json
- /{label}/{name}-{profiles}.json
- /{label}/{name}-{profiles}.yml
- /{label}/{name}-{profiles}.yaml
- /{名称}-{配置文件}.yml
- /{名称}-{配置文件}.yaml
- /{name}/{profiles:.[^-].}
- /{名称}-{配置文件}.properties
- /{姓名}/{个人资料}/{标签}/**
我在 git 上尝试了一个带有 属性 文件的示例 spring-cloud-server
项目。我在文件中为每个标签应用了具有不同值的 git 标签 v1
和 v2
(我使用了配置文件 remote
):
标签 v1:
http://localhost:8888/v1/application-remote.properties
> testproperty: remotevalue-v1
标签 v2:
http://localhost:8888/v2/application-remote.properties
> testproperty: remotevalue-v2
无标签:
http://localhost:8888/application-remote.properties
> testproperty: remotevalue-master
Java代码
我没试过,但我想你也可以使用 cloud-config-server 的 java API(直接注入和调用控制器而不是做 http 请求):
@Autowired
EnvironmentController environmentController;
...
Environment labelled = environmentController.labelled("application", "remote", "v1");
Map<?, ?> keyValues = labelled.getPropertySources().get(0).getSource();
我使用 Spring Boot 开发了一个微服务。此服务正在使用 Spring 云配置服务器获取属性。该微服务接受 header 中的版本,并根据版本执行相应的功能。在我的 github 仓库中,我有 2 个分支,每个版本 1 个。该服务通常将以下信息发送到配置服务器以获取属性 -
application-name + 配置文件 + 标签
有没有办法在我的 .yml 文件中用占位符代替标签?如果我在 header else v2.
中看到 v1,我希望将标签动态设置为 v1编辑:
我在本文档 (http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html) 的 "Placeholders in Git URI" 部分看到了对占位符的引用,但是我不确定如何从传入请求中动态替换值
spring-cloud-config-server 使多个 REST API 可用,允许直接查询 属性 文件:
$ hostname:port/{label}/{name}-{profiles}.properties]
您可以动态使用您选择的任何标签,只要它与 git 上的现有标签匹配即可。
例如,要检索 application.properties
,在 git 中标记为 v1
:
$ http://${hostname}:${port}/v1/application.properties
配置服务器 REST API:
- /{名称}/{配置文件}/{标签:.*
- /{label}/{name}-{profiles}.properties
- /{姓名}-{个人资料}。json
- /{label}/{name}-{profiles}.json
- /{label}/{name}-{profiles}.yml
- /{label}/{name}-{profiles}.yaml
- /{名称}-{配置文件}.yml
- /{名称}-{配置文件}.yaml
- /{name}/{profiles:.[^-].}
- /{名称}-{配置文件}.properties
- /{姓名}/{个人资料}/{标签}/**
我在 git 上尝试了一个带有 属性 文件的示例 spring-cloud-server
项目。我在文件中为每个标签应用了具有不同值的 git 标签 v1
和 v2
(我使用了配置文件 remote
):
标签 v1:
http://localhost:8888/v1/application-remote.properties
> testproperty: remotevalue-v1
标签 v2:
http://localhost:8888/v2/application-remote.properties
> testproperty: remotevalue-v2
无标签:
http://localhost:8888/application-remote.properties
> testproperty: remotevalue-master
Java代码
我没试过,但我想你也可以使用 cloud-config-server 的 java API(直接注入和调用控制器而不是做 http 请求):
@Autowired
EnvironmentController environmentController;
...
Environment labelled = environmentController.labelled("application", "remote", "v1");
Map<?, ?> keyValues = labelled.getPropertySources().get(0).getSource();