spring - 如何参数化搜索位置路径以在其他配置文件中重用
问题描述
我有不同的文件(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 的搜索位置路径参数化甚至是一种好习惯?
解决方案
首先说我几乎不直接在本地文件系统(外部类路径)中使用配置文件(yml属性xml ...),即使是本地测试。如果
spring-cloud-config
您使用远程位置包含配置,问题可能会有所不同。其次,您是否使用过一些项目经理工具,例如
maven
orgradle
?在我看来,这maven
是构建 spring-boot 项目的默认工具。对于 maven,有像Maven Resources Plugin这样的插件来参数化您的配置变量,pom.xml
它可以帮助您在构建步骤中为一个文件中的所有变量只修改一次参数,与gradle
.对于
spring-cloud-config
,可以将您的几乎所有配置属性移至它。意味着您可以将您的配置属性移入application-dev.yml
和移入integration-config.xml
的spring-cloud-config
配置文件,在您的情况下file:///C:/dev/workspace/application/config/{profile}
,它将在运行时加载为环境变量以进行 spring 自动配置,或者如果您想手动获取它,您可以@Autowired
将其加载到您的配置文件中。Environment
推荐阅读
- c# - GenericPrincipal 与 ClaimsPrincipal。Razor 视图中用户属性的差异
- c# - c# datetimeoffset json反序列化
- ios - iOS/Swift:在 NSObject 中声明变量或属性的简单方法
- video - 尽可能准确地使用 ffmpeg 分割 mp4 视频
- c# - 使用 SasLocator 上传到 Azure 媒体服务/blob 存储不显示上传的文件
- swift - 在 WatchKit 中的接口控制器之间传递数据
- php - 在 WordPress 中看不到来自自定义模板的 php-content
- java - Catalina.out 不存在
- javascript - 什么可能会阻止 Windows 计算机上的欺骗性 UDP 数据包?
- scala - 如何添加具有最大值的新列?