2017-06-21 39 views
1

我有问题,尝试使用变量替换与typesafehub ConfigFactory fileParserConfigFactory ParseFile解决与变量替换Java系统属性

我的代码

Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve()) 

和我app.conf文件包含

path = ${java.home} 

对每个解决方案我无法解决该变量与变量替换找到Java系统属性家。任何想法如何使这项工作

回答

0

path = ${java.home}你指的是java.home在同一个配置文件中的其他值。为了覆盖值应与

java -jar -Djava.home=VALUE your_jar.jar

或使用一些工具,让您来传递参数运行应用程序。

如果你想设置这个值System.setProperty()比你需要在加载配置文件之前设置它。

0

要获得优先功能,您需要遵循ConfigFactory.load()或通过Config#withFallback方法处理merging configuration。事实上,这是如何工作的 。

https://github.com/typesafehub/config#standard-behavior

便利方法ConfigFactory.load()加载以下 (第一个列出的是更高的优先级):

  • 系统属性application.conf(所有的资源上与类路径 这个名字)
  • application.json(这个名字的所有资源都在这个类路径上)
  • 个application.properties(类路径上的所有资源与这一 名)
  • reference.conf(类路径上的所有资源使用该名称)

恕我直言,你应该依靠默认行为,使用-Dconfig.file=/path/to/your.conf传递文件作为您的应用程序的参数。

我强烈建议阅读写得很好的文档。