spring-boot:使用硬编码文件名配置 属性-文件的不同版本?

spring-boot: configuring different versions of a property-file with hardcoded filename?

构建一个 spring-boot 应用程序,我们依赖于第 3 方 jar 文件, 希望在类路径上找到具有硬编码文件名(比如 xyz.properties)的属性文件, 并将从中读取其属性。

不过,我们需要 "switch in" 此属性文件的不同版本,具体取决于我们部署 jar 文件的环境。 因此,最好将 jar 文件外部的目录添加到类路径中,我们可以在其中放置属性文件。

谷歌搜索,我发现其他人也有类似的问题, 但不是一个简单、干净的解决方案。 在我看来,spring 属性模型假定您只关心 属性 名称及其值 (从 System.getProperties() 中挑选它们) 并且真的不关心每个值来自哪个属性文件。

当您按照该模型构建自己的代码时,这可能没问题, 但在依赖第三方解决方案时可能不太适合,例如我们的用例。

我找到的最简单的解决方法是 "explode" spring jar 文件, 然后将所需的 属性 文件复制到 WEB-INF/classes, 然后从 JarLauncher 开始。

只是想知道有没有更好的方法,不需要"explode"呢?

我的上述理解是否正确,还是我忽略了一些已经支持此用例的 spring 功能?

希望它仍然有效 - 但通过一些技巧,您可以设置自己的类路径:

java -cp "./conf/:yourBoot.jar" org.springframework.boot.loader.JarLauncher

然后你可以将你的配置放在外部目录中(正如你已经建议的那样)。

查看原问题:Add jar file to spring-boot classpath at runtime