我最近将Play框架更新为2.4,并且我的配置管理出了问题。
以前,我使用主int firstnum,secondnum; int total = 0 ;
文件和特定配置文件application.conf
和application.dev.conf
来覆盖某些配置值。
但是,对于新版本,似乎配置未正确合并。我使用了documentation:
中显示的以下ApplicationLoaderapplication.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"
的值。知道这可能来自何处?
答案 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): _*)
}
}