【问题标题】:spring cloud config searchPaths春季云配置搜索路径
【发布时间】:2016-05-03 18:14:42
【问题描述】:

我正在考虑通过 Spring Cloud Config 实现 12factor 方法来外部化配置,但我无法使用 searchPaths 使通配符按我的预期工作。

文档http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_spring_cloud_config_server 提到通配符 {application}、{label}、{profile} 可以在 searchPaths 变量中使用,以便 “您可以分隔路径中的目录,并选择一种策略,使适合您(例如每个应用程序的子目录,或每个配置文件的子目录)。"

我希望有一个 git 存储库,每个配置文件(然后是每个应用程序)有子目录,或者每个应用程序有子目录(然后按配置文件)。

例如

    spring:
      cloud:
        config:
          server:
            git:
              uri: https://stash.xxx.com.au/scm/xxx/config
              searchPaths: {application}
or
              searchPaths: {profile}
or
              searchPaths: {application}/{profile}

但是,当我在 searchPaths 中使用任何通配符 {application} 或 {profile} 时,它在 git 存储库中找不到数据,或者连接选项根本无法启动。

有没有人可以参考这个工作的例子? 干杯 罗伊

【问题讨论】:

  • 你没有说你使用的是什么版本的spring cloud config(这是最近的功能)。

标签: spring-boot spring-cloud


【解决方案1】:

使用单引号,效果很好。

searchPaths: '{application}'

如果有人偶然发现这个问题,希望这会有所帮助。

【讨论】:

    【解决方案2】:

    实际上,用户指南中的示例都没有显示searchPaths 列表中使用的模式。我认为 GIT 后端不支持该功能(但 {application} 实际上是文件系统后端的默认设置,即在“本机”配置文件中工作的那个)。

    【讨论】:

    • 谢谢戴夫。你说得对。我误读了指南。它提到对于“native”,我们可以使用带有占位符的 spring.cloud.config.server.native.searchLocations,并且在上一节中还有基于文件的 repos 的 searchPaths 示例。我认为这些是相同的,因为它们都是基于本地文件的,但看起来它们的处理方式不同。
    • 我认为在 VCS 存储库中的搜索路径中添加占位符也是一个相当不错的主意。随意在 GitHub 中打开一个问题。
    【解决方案3】:

    除上述之外,更重要的是,如果您希望读取在每个环境的多个应用程序之间共享的通用配置(例如 application.yml)。然后将 application.yml 放在一个文件夹中(比如说 - common),然后配置如下:

    searchPaths:
      - '{application}'
      - common
    

    {application} 解析为配置客户端 bootstrap.yaml 中“spring.application.name”的值。

    参考:https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html#_placeholders_in_git_search_paths

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-23
      • 2016-09-29
      • 2016-11-01
      • 2019-05-02
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2019-07-18
      相关资源
      最近更新 更多