首页 > 解决方案 > 如何参数化搜索位置路径以在其他配置文件中重用

问题描述

我有不同的文件(yml 和 xml 文件),我在其中硬编码包含我的配置文件的相同文件夹路径。我想参数化这个路径,所以我只能移动我的配置和修改我的参数一次。

我的bootstrap.yml

...
      cloud:
        config:
          failFast: true     
          server:
            bootstrap: true
            prefix: /config
            native:
              search-locations: file:///C:/dev/workspace/application/config/{profile}

我的application-dev.yml

...
logging:
  config: file:///C:/dev/workspace/application/config/{profile}/log4j2-dev.xml

我的 integration-config.xml :

<context:property-placeholder location="file:///C:/dev/workspace/application/config/${spring.profiles.active}/application-${spring.profiles.active}.properties" />

我怎样才能做到这一点?在这种情况下,最佳做法是什么?或者将 Spring Config Server File System 的搜索位置路径参数化甚至是一种好习惯?

标签: springspring-bootspring-cloudspring-cloud-config

解决方案


  1. 首先说我几乎不直接在本地文件系统(外部类路径)中使用配置文件(yml属性xml ...),即使是本地测试。如果spring-cloud-config您使用远程位置包含配置,问题可能会有所不同。

  2. 其次,您是否使用过一些项目经理工具,例如mavenor gradle?在我看来,这maven是构建 spring-boot 项目的默认工具。对于 maven,有像Maven Resources Plugin这样的插件来参数化您的配置变量,pom.xml它可以帮助您在构建步骤中为一个文件中的所有变量只修改一次参数,与gradle.

  3. 对于spring-cloud-config,可以将您的几乎所有配置属性移至它。意味着您可以将您的配置属性移入application-dev.yml和移入integration-config.xmlspring-cloud-config配置文件,在您的情况下file:///C:/dev/workspace/application/config/{profile},它将在运行时加载为环境变量以进行 spring 自动配置,或者如果您想手动获取它,您可以@Autowired将其加载到您的配置文件中。Environment


推荐阅读