Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用typesafe/akka config合并多个级别的配置_Java_Scala_Configuration_Akka_Typesafe - Fatal编程技术网

Java 使用typesafe/akka config合并多个级别的配置

Java 使用typesafe/akka config合并多个级别的配置,java,scala,configuration,akka,typesafe,Java,Scala,Configuration,Akka,Typesafe,我在看: 假设我希望有一个默认配置,例如reference.conf,然后我希望有dev/prod覆盖(两个不同的application.conf),然后我还希望有从application.conf和默认reference.conf继承的主机特定覆盖。我该怎么做 e、 我在想象一个目录结构,比如: resources/reference.conf resources/prod/application.conf resources/prod/master.conf resources/prod/

我在看:

假设我希望有一个默认配置,例如reference.conf,然后我希望有dev/prod覆盖(两个不同的application.conf),然后我还希望有从application.conf和默认reference.conf继承的主机特定覆盖。我该怎么做

e、 我在想象一个目录结构,比如:

resources/reference.conf
resources/prod/application.conf
resources/prod/master.conf
resources/prod/slave.conf
resources/dev/application.conf
resources/dev/master.conf
resources/dev/slave.conf
getConfigurations("dev/master.conf").withDefaultsFrom(
    getConfigurations("dev/application.conf").withDefaultsFrom(
        getConfigurations("resource.conf"))
或者可能是resources/dev/master/application.conf

我会在某个地方指定一个环境,即可能从启动应用程序的主机名中提取

如果应用程序是master.dev.example.com,我希望我能够执行以下操作:

resources/reference.conf
resources/prod/application.conf
resources/prod/master.conf
resources/prod/slave.conf
resources/dev/application.conf
resources/dev/master.conf
resources/dev/slave.conf
getConfigurations("dev/master.conf").withDefaultsFrom(
    getConfigurations("dev/application.conf").withDefaultsFrom(
        getConfigurations("resource.conf"))
但是我很难理解使用给定的库会是什么样子

我知道我可以设置config.resource系统属性,但它看起来只允许一级覆盖,dev-application.conf->resources.conf,而不是master-node.conf->dev-application.conf->resources.conf


我看到了一种.withFallback方法,但是如果我想在一个文件中混合使用两种配置,而不是将资源/文件链接在一起。

首先对优先级最高的配置使用multiple
withFallback
。例如:

Config finalConfig = 
  ConfigFactory.systemProperties().
    withFallback(masterConfig).
    withFallback(applicationConfig).
    withFallback(referenceConfig)
masterConfig
这样的每个配置都会加载
Config.parseFile
。您还可以使用
ConfigFactor.load
作为一种方便,但是
parseXXX
方法可以让您更好地控制层次结构