考虑以下文件:
application.conf
app {
port = 5000
}
reference.conf
akka {
cluster {
seed-nodes = ["akka.tcp://sysName@localhost:"${app.port}]
}
}
因此,当我运行ConfigFactory.load()
时,它失败了,因为reference.conf中没有${app.port}
。
但加载算法很明确 - reference.conf
已加载并与application.conf
合并。有没有办法加载application.conf
和“包含”reference.conf
?
重要
我尝试在include "reference.conf"
的第一行添加application.conf
,但这无效。
答案 0 :(得分:0)
您可以使用file("")
语法来包含文件。
include file("reference.conf")
请参阅https://github.com/typesafehub/config/blob/master/HOCON.md#include-syntax
答案 1 :(得分:0)
根据Typesafe Config documentation:
这意味着
reference.conf
堆栈必须是 自成一体;你不能留下未定义的值${foo.bar}
由application.conf
提供,或以您的方式参考${foo.bar}
希望允许application.conf
覆盖。但是,application.conf
可以引用${foo.bar}
中的reference.conf
。
该文档还列出了一些可能的解决方法:
- 将
application.conf
与reference.conf
一起放在库jar中,其值用于以后解析。- 在代码中添加一些逻辑,而不是在配置本身中构建值。