17

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"
    },
....

したがって、前方参照は機能しないと思います。システム プロパティの後にオプションをロードして、構成パーサーが値を正しく置き換える方法はありますか?

4

1 に答える 1

23

前方参照は正常に機能します。問題は、引用符の中に構文があることだけだと思います${}ので、特別な意味はありません。次のようにしてみてください。

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

${}(内容は引用されていないことに注意してください)

HOCON 形式では、有効な JSON はすべて JSON の場合と同じように解釈されるため、たとえば、引用符で囲まれた文字列には、JSON がサポートするエスケープ シーケンス以外の特別な構文は含まれません。

于 2013-08-29T20:27:46.770 に答える