Spring Cloud 配置服务器 - 占位符标签

Pun*_*cky 5 spring cloud-foundry spring-boot spring-cloud spring-cloud-config

我使用 Spring Boot 开发了一个微服务。该服务使用 Spring 云配置服务器获取属性。该微服务接受标头中的版本,并根据版本执行适当的功能。在我的 github 存储库中,我有 2 个分支,每个版本 1 个。该服务通常将以下信息发送到配置服务器以获取属性 -

应用程序名称+配置文件+标签

有没有办法在我的 .yml 文件中用占位符代替标签?如果我在标题中看到 v1,则我希望将标签动态设置为 v1,否则 v2。

编辑:

我在本文档( http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html )的“Git URI 中的占位符”部分下看到对占位符的引用,但是我不确定值如何从传入请求动态替换

ale*_*xbt 4

spring-cloud-config-server 提供了多个 REST API,允许直接查询属性文件:

$ hostname:port/{label}/{name}-{profiles}.properties]
Run Code Online (Sandbox Code Playgroud)

您可以动态使用您选择的任何标签,只要它与 git 上的现有标签匹配即可。

例如,要检索git 中application.properties标记的:v1

 $ http://${hostname}:${port}/v1/application.properties
Run Code Online (Sandbox Code Playgroud)

配置服务器 REST API:

  • /{名称}/{个人资料}/{标签:.*
  • /{标签}/{名称}-{配置文件}.properties
  • /{名称}-{配置文件}.json
  • /{标签}/{名称}-{配置文件}.json
  • /{标签}/{名称}-{配置文件}.yml
  • /{标签}/{名称}-{配置文件}.yaml
  • /{名称}-{配置文件}.yml
  • /{名称}-{配置文件}.yaml
  • /{名称}/{个人资料:. [^-]。}
  • /{名称}-{配置文件}.properties
  • /{名称}/{个人资料}/{标签}/**

spring-cloud-server在 git 上尝试了一个带有属性文件的示例项目。我应用了 git 标签v1,并v2在文件中为每个标签使用不同的值(我使用了 profile remote):

标签 v1

http://localhost:8888/v1/application-remote.properties
> testproperty: remotevalue-v1
Run Code Online (Sandbox Code Playgroud)

标签 v2

http://localhost:8888/v2/application-remote.properties
> testproperty: remotevalue-v2
Run Code Online (Sandbox Code Playgroud)

无标签

http://localhost:8888/application-remote.properties
> testproperty: remotevalue-master
Run Code Online (Sandbox Code Playgroud)

Java代码

我没有尝试,但我想你也可以使用cloud-config-server的java API(直接注入和调用控制器而不是执行http请求):

@Autowired
EnvironmentController environmentController;
...

Environment labelled = environmentController.labelled("application", "remote", "v1");
Map<?, ?> keyValues = labelled.getPropertySources().get(0).getSource();
Run Code Online (Sandbox Code Playgroud)