Spring Cloud Config Server - 占位符标签

时间:2016-06-21 03:22:10

标签: spring spring-boot spring-cloud pivotal-cloud-foundry spring-cloud-config

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

application-name + profile + label

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

修改

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

1 个答案:

答案 0 :(得分:2)

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

$ hostname:port/{label}/{name}-{profiles}.properties]

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

例如,要检索{g}中标记为application.properties的{​​{1}}

v1

配置服务器REST API:

  • / {name} / {profiles} / {label:。*
  • / {标签} / {名称} - {型材}的.properties
  • / {名称} - {型材}上传.json
  • / {标签} / {名称} - {型材}上传.json
  • / {标签} / {名称} - {型材} .yml
  • / {标签} / {名称} - {型材} .yaml
  • / {名称} - {型材} .yml
  • / {名称} - {型材} .yaml
  • / {名称} / {配置文件: [^ - ] 。。}
  • / {名称} - {型材}的.properties
  • / {名称} / {轮廓} / {标签} / **

我在git上尝试了一个带有属性文件的示例 $ http://${hostname}:${port}/v1/application.properties 项目。我在文件中为每个标签应用了不同值的git标记spring-cloud-serverv1(我使用了个人资料v2):

标签v1

remote

标签v2

http://localhost:8888/v1/application-remote.properties
> testproperty: remotevalue-v1

没有标签

http://localhost:8888/v2/application-remote.properties
> testproperty: remotevalue-v2

Java代码

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

http://localhost:8888/application-remote.properties
> testproperty: remotevalue-master