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

Spring Cloud Config Server中配置文件的模式匹配

公良琛
2023-03-14
spring:
  application:
    name: "bluemoon"
  cloud:
    config:
      server:
        git:
          uri: file://${user.home}/tmp/prod
          repos:
            development:
              pattern:
                - \*/dev
              uri: file://${user.home}/tmp/dev

启动服务器实例后,我可以使用curl成功地检索配置内容,并可以通过引用“source”元素以及属性本身的值来验证服务了哪些内容。

当我获取http://localhost:8080/floof/prod时,我希望看到源“$home/tmp/prod/floof.yaml”和来自该源的值,并且实际结果与预期相符。

当我获取http://localhost:8080/floof/dev时,我希望看到源代码“$home/tmp/dev/floof-dev.yaml”和来自该源代码的值,但实际结果是“生产”文件和内容(与我获取.../floof/prod相同)。

  1. 我对行为的预期是否不正确?我认为没有,因为“Git Backend”一节中的文档中有一个示例表明通过概要文件进行分离是一件事。
  2. 我的服务器配置是否错误地指定了“开发”repo?我打开了服务器实例中冗长的日志记录,但没有看到任何引起注意的错误配置。
  3. 属性文件是否服从我没有遵循的命名约定?

共有1个答案

丁志勇
2023-03-14

我也有同样的问题。下面是我如何解析配置文件的::spring cloud配置模式匹配

另外,检查您是否正在使用Brixton.m5版本。

在对PatternMatching源代码进行一些调试后,这里是我如何解决这个问题的:您可以从两种方法中选择一种。

application.yml
server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: ssh://xxxx@github/sample/cloud-config-properties.git
          repos:
           development:
            pattern: '*/development' ## give in quotes
            uri: ssh://git@xxxgithub.com/development.git
development:
  pattern: xx*/development,*/development ##since it is not allowed to have a value starting with a wildcard( '*' )after pattern I first gave a generic matching but the second value is */development. Since pattern takes multiple values, the second pattern will match with the profile.
  uri: ssh://git@xxxgithub.com/development.git
 repos:
    development:
     pattern:
      -*/development    
      -*/staging 
repos:
        development:
         pattern:
          - */development    
          - */staging 
 类似资料:
  • 根据文档--不管应用程序名称如何,如果模式与*/development(即localhost:8888/user/development或localhost:8888/demo/development)匹配,配置服务器应该匹配配置文件模式并获取适当的属性。例如:http://localhost:8888/demo/development我应该从ssh://git@xxxgithub.com/dev

  • 通配符 # glob_asterisk.py import glob for name in sorted(glob.glob('dir/*')): print(name) # glob_subdir.py import glob print('Named explicitly:') for name in sorted(glob.glob('dir/subdir/*')):

  • 问题内容: 我有一个类似… 的正则表达式模式,我需要搜索成千上万个文件(大小从1KB到24 MB不等)以成千上万个文件(介于100到8000之间)。 我想知道是否有比我尝试过的模式匹配更快的方法。 环境: 杰克1.8 Windows 10 Unix4j库 这是我到目前为止尝试过的 我明白了,这让我觉得我做错了什么。 我对流使用了不同的方法,平均每种方法需要大约一分钟的时间来处理当前的6660个文件

  • dir=“某物”\temp。 我是新来的,任何帮助都很感激。我认为这是字符转义…但我不确定,我想使用正则表达式,但我想我会遇到同样的问题。 预期 C:\\users\\admin\\appdata\\local\\ dir=c:\\users\\admin\\appdata\\local\\temp

  • 问题内容: 我已经使用Python和Django建立了一个在线画廊。我刚刚开始添加编辑功能,从旋转开始。我使用sorl.thumbnail按需自动生成缩略图。 当我编辑原始文件时,我需要清理所有缩略图,以便生成新的缩略图。每个图片有三到四个(我在不同场合有不同的图片)。 我 可以 在文件变量中进行硬编码…但是这很混乱,如果我改变工作方式,则需要重新访问代码。 理想情况下,我想进行正则删除。用正则表

  • 我编写了一个脚本,可以递归地从一个目录复制到另一个目录,跳过文件名中具有特定模式的文件: 在大多数情况下,它工作得很好。但我的问题是,它在每个文件夹中创建了一个子文件夹,其中包含文件。例如: 如果输入源作为具有此结构的目录: 我希望在目标文件夹中创建以下结构: 但相反,我得到了: 知道我哪里错了吗?