玩! 2.4添加补充配置文件

时间:2015-09-25 09:55:37

标签: scala configuration playframework-2.4

我最近将Play框架更新为2.4,并且我的配置管理出了问题。

以前,我使用主int firstnum,secondnum; int total = 0 ; 文件和特定配置文件application.confapplication.dev.conf来覆盖某些配置值。

但是,对于新版本,似乎配置未正确合并。我使用了documentation

中显示的以下ApplicationLoader
application.prod.conf

我在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

但在最终配置中似乎只考虑play.application.loader = "config.CustomApplicationLoader" 的值。知道这可能来自何处?

1 个答案:

答案 0 :(得分:0)

似乎我使用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): _*)
  }
}