当前位置: 首页 > 知识库问答 >
问题:

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

欧浩淼
2023-03-14

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

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

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

编辑:

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

共有1个答案

赵嘉悦
2023-03-14

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

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

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

例如,检索应用程序。git中标记为v1的属性:

 $ http://${hostname}:${port}/v1/application.properties

配置服务器REST API:

  • /{名称}/{配置文件}/{标签:.*
  • /{标签}/{名称}-{配置文件}。属性
  • /{名称}-{配置文件}。json
  • /{标签}/{名称}-{配置文件}。json
  • /{标签}/{名称}-{配置文件}。yml
  • /{标签}/{名称}-{配置文件}。yaml
  • /{名称}-{配置文件}。yml
  • /{名称}-{配置文件}。yaml
  • /{名称}/{配置文件:.[^-]。}
  • /{名称}-{配置文件}。属性
  • /{名称}/{配置文件}/{标签}/**

我尝试了一个带有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 Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我使用文件系统后端(spring.profiles.active=本机)加载配置文件。 我想要实现的是每个应用程序都有单独的文件夹,其中存储了所有适当组件的配置,例如 /configs/TestApp1/*. yml, /configs/TestApp2/*. yml 文档告诉我们,这可以使用搜索位置属性中的占位符{应用程序}来完成(根据Spring Cloud Config Server留档ht

  • 我正在尝试创建SpringCloudConfigServer,以便使用SSHURI连接到git存储库(bitbucket)。我正在关注Spring云配置 我使用ssh-keygen实用工具生成了密钥对,并粘贴了。发布文件内容在我的bitbucket帐户的ssh部分,但当我运行作为spring启动应用程序的服务器时,我得到无效的privateKey异常。 我也使用了这个堆栈溢出帖子中提供的建议,但是

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足

  • 将配置服务器用户名和密码存储为环境变量(在客户端和服务器中)还是使用密钥库更好?密钥库密码无论如何都存储为环境变量,那么为什么实际使用密钥库呢?还是有更好的方法在SpringCloudConfig服务器中实现身份验证?

  • 我正在设置一个Spring启动云配置服务器,它使用VAULT来存储秘密。 保管库身份验证机制设置为AWS_IAM。我的类路径中也有aws-java-sdk。aws cli也被配置。 当我向配置服务器发出请求时,我能够从VAULT中获取机密,但第一次请求除外 对配置服务器的第一个请求失败,因为它试图安排任务在到期后续订vault令牌(来自vault响应) 应用程序中的配置。性质 错误日志是