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

时间:2016-04-07 11:22:39

标签: java spring dependency-injection spring-boot properties-file

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

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

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

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

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

只是想知道是否有更好的方法,而不需要"爆炸"它?

我的理解是否正确,或者我是否忽略了一些已经支持此用例的弹簧功能?

1 个答案:

答案 0 :(得分:1)

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

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

然后您可以将配置放在外部目录中(如您所建议的那样)。

请参阅原始问题:Add jar file to spring-boot classpath at runtime