2

有什么方法可以动态更改Typesafe 配置文件的字段,使用源代码填充占位符?

例如,假设以下简单的配置语句

{
  values {
    string1: ${name1}
    string2: ${name2}
    string3: ${name3}
    string4: ${name4}
  }
}

正如HOCON文档中所讨论的以及早期的 StackOverflow 问题中所提到的,可以使用环境变量和系统属性来实现这一点。

是否也可以直接从程序中做同样的事情?例如,在 中Java,有一个Constants

public class Constants
{
  public static final String name1 = "A";
  public static final String name2 = "B";
  public static final String name3 = "C";
  public static final String name4 = "D";
}

并填充该类的配置字段?

HOCON允许Java在配置文件中集成和执行代码,但显然无法从集成Java代码中设置配置占位符。

4

1 回答 1

4

您可以通过resolve(...)Config.

import com.typesafe.config.ConfigFactory;
import com.typesafe.config.Config;

public class ConfigOverrideFromCode {
    static public void main(String[] args) {
        String config = "system.administrator = ${who-knows}";

        Config original = ConfigFactory
                    .parseString(config)
                    .resolveWith(ConfigFactory.parseString("who-knows = jon"));
        System.out.println(original.getString("system.administrator"));
    }
}
于 2014-07-09T09:45:28.667 回答