玩! 2.4 添加补充配置文件

Play! 2.4 add complementary configuration file

我最近将 Play 框架更新到 2.4,但我的配置管理出现了问题。

以前,我使用主要 application.conf 文件和特定配置文件 application.dev.confapplication.prod.conf 来覆盖一些配置值。

然而,对于新版本,配置似乎没有正确合并。我使用 documentation:

中所示的以下 ApplicationLoader
package config

import com.typesafe.config.ConfigFactory
import play.api.{Logger, ApplicationLoader, Configuration}
import play.api.inject._
import play.api.inject.guice._

class CustomApplicationLoader extends GuiceApplicationLoader {
  override def builder(context : ApplicationLoader.Context) = {
    val mode = context.environment.mode.toString
    val extraConfName = s"application.${mode.toLowerCase}.conf")
    val extra = Configuration(ConfigFactory.load(extraConfName))
    initialBuilder
      .in(context.environment)
      .loadConfig(extra ++ context.initialConfiguration)
      .overrides(overrides(context): _*)
  }
}

并且我在我的 application.conf 文件中添加了这个 class 加载程序:

play.application.loader = "config.CustomApplicationLoader"

但在最终配置中似乎只考虑了 application.conf 中的值。知道这可能来自哪里吗?

看来我使用了 ConfigFactory 中的错误方法,使用方法 parseResource 将仅检索附加密钥,而不是像 load 那样将它们置于默认配置中做.

因此以下代码将按预期工作:

class CustomApplicationLoader extends GuiceApplicationLoader {
  override def builder(context : ApplicationLoader.Context) = {
    val mode = context.environment.mode.toString
    val extraConfName = s"application.${mode.toLowerCase}.conf"
    val extra = Configuration(ConfigFactory.parseResources(extraConfName))
    initialBuilder
      .in(context.environment)
      .loadConfig(context.initialConfiguration ++ extra)
      .overrides(overrides(context): _*)
  }
}