【问题标题】:How to use system properties to substitute placeholders in Typesafe Config file?如何使用系统属性替换 Typesafe Config 文件中的占位符?
【发布时间】:2013-09-02 10:26:46
【问题描述】:

我需要在我的 application.conf 文件中引用 java.io.tmpdir

我用

打印了我的配置内容
val c = ConfigFactory.load()
System.err.println(c.root().render())

它会像这样渲染它

# dev/application.conf: 1
"myapp" : {
    # dev/application.conf: 47
    "db" : {
        # dev/application.conf: 49
        "driver" : "org.h2.Driver",
        # dev/application.conf: 48
        "url" : "jdbc:h2:file:${java.io.tmpdir}/db;DB_CLOSE_DELAY=-1"
    }
 ...
 }
# system properties
"java" : {
    # system properties
    "io" : {
        # system properties
        "tmpdir" : "/tmp"
    },
....

所以我猜前向引用不起作用。有没有办法在系统属性之后加载我的选项,以便配置解析器正确替换值?

【问题讨论】:

  • 请注意ConfigFactory.parseFile 不使用系统属性,而ConfigFactory.load 使用。

标签: scala config typesafe


【解决方案1】:

前向引用工作正常;我相信问题只是你在引号内有${} 语法,所以它没有特殊含义。试试这样:

url = "jdbc:h2:file:"${java.io.tmpdir}"/db;DB_CLOSE_DELAY=-1"

(注意${} 的东西没有被引用)

在 HOCON 格式中,任何有效的 JSON 都将被解释为它在 JSON 中的样子,因此引用的字符串内部没有特殊语法,除了 JSON 支持的转义序列。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2014-08-29
    • 1970-01-01
    • 2010-09-29
    • 2017-08-26
    • 2017-12-17
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多