scala - 如何使用系统属性替换 Typesafe Config 文件中的占位符?

标签 scala config typesafe

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

我打印了我的配置内容

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

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

最佳答案

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

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

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

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

关于scala - 如何使用系统属性替换 Typesafe Config 文件中的占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520235/

相关文章:

java - 使用 SBT 将 Artifact 发布到本地 Maven 仓库并在 ​​Gradle 项目中使用它

javascript - 找不到入口模块 : Error: Can't resolve './src'

php - 如何在 Laravel 5.4 中使用数据库表值作为常量

scala - 光滑3.2 : Filtering on columns from left-joined table

scala - 使用新的 Scala 反射 API 获取伴随对象实例

Scala 向量标量乘法

scala - Guice 可以注入(inject) Scala 对象吗

javascript - 配置菜单的路线 Angular

playframework - Typesafe Activator 运行错误(无法检索 jansi 1.11)

scala - 如何使用 Typesafe 配置库获取列表