我在尝试将变量替换与 typesafehub ConfigFactory fileParser 一起使用时遇到问题
我的代码是
Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve())
我的 app.conf 文件包含
path = ${java.home}
在每次解析时,我都无法通过变量替换来解析该变量以找到 java 系统属性主页。任何想法如何使这项工作
我在尝试将变量替换与 typesafehub ConfigFactory fileParser 一起使用时遇到问题
我的代码是
Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve())
我的 app.conf 文件包含
path = ${java.home}
在每次解析时,我都无法通过变量替换来解析该变量以找到 java 系统属性主页。任何想法如何使这项工作
要利用覆盖功能,您需要坚持或通过该方法ConfigFactory.load()处理合并配置。Config#withFallback事实上,这就是
ConfigFactory#load()工作原理。
https://github.com/typesafehub/config#standard-behavior
便捷方法 ConfigFactory.load() 加载以下内容(首先列出的优先级较高):
- 系统属性 application.conf(类路径上具有此名称的所有资源)
- application.json (类路径上具有此名称的所有资源)
- application.properties(类路径上具有此名称的所有资源)
- reference.conf(类路径上具有此名称的所有资源)
恕我直言,您应该依赖默认行为并使用-Dconfig.file=/path/to/your.conf将文件作为参数传递给您的应用程序。
我强烈建议阅读写得很好的文档。
在path = ${java.home}您指java.home的是同一配置文件中的其他值。为了覆盖值,您应该运行您的应用程序
java -jar -Djava.home=VALUE your_jar.jar
或使用一些允许您传递参数的工具。
如果要设置此值,System.setProperty()则需要在加载配置文件之前进行设置。