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 中的占位符”部分下看到对占位符的引用,但是我不确定值如何从传入请求动态替换
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:
我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)
| 归档时间: |
|
| 查看次数: |
3198 次 |
| 最近记录: |