如何在类型安全配置文件中重用属性?

时间:2014-11-07 15:01:46

标签: scala properties akka config

考虑以下文件:

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,但这无效。

2 个答案:

答案 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.confreference.conf一起放在库jar中,其值用于以后解析。
  •   
  • 在代码中添加一些逻辑,而不是在配置本身中构建值。
  •