ConfigFactory ParseFile使用Java系统属性解析变量替换

时间:2017-06-21 21:23:50

标签: java scala configuration typesafe hocon

我在尝试使用typesafehub ConfigFactory fileParser的变量替换时遇到问题

我的代码是

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

我的app.conf文件包含

path = ${java.home}

对于每个解析我都无法使用变量替换来解析该变量以查找java系统属性home。任何想法如何使这项工作

2 个答案:

答案 0 :(得分:2)

要利用覆盖ConfigFactory.load()的最重要功能,或通过Config#withFallback方法处理merging configuration。实际上就是这样 ConfigFactory#load()有效。

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

  

便捷方法ConfigFactory.load()加载以下内容   (首先列出的是更高优先级):

     
      
  • 系统属性application.conf(classpath上的所有资源都带有   这个名字)
  •   
  • application.json(类路径上的所有资源都带有此   姓名)
  •   
  • application.properties(类路径上的所有资源都带有此   姓名)
  •   
  • reference.conf(具有此名称的classpath上的所有资源)
  •   

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

我强烈建议您阅读编写得非常好的文档。

答案 1 :(得分:0)

path = ${java.home},您指的是同一配置文件中java.home下的其他值。要覆盖值,您应该使用

运行应用程序

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

或使用一些允许您传递参数的工具。

如果要在System.setProperty()之前设置此值,则需要在加载配置文件之前设置该值。