玩! 2.4 添加补充配置文件
Play! 2.4 add complementary configuration file
我最近将 Play 框架更新到 2.4,但我的配置管理出现了问题。
以前,我使用主要 application.conf
文件和特定配置文件 application.dev.conf
和 application.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): _*)
}
}
我最近将 Play 框架更新到 2.4,但我的配置管理出现了问题。
以前,我使用主要 application.conf
文件和特定配置文件 application.dev.conf
和 application.prod.conf
来覆盖一些配置值。
然而,对于新版本,配置似乎没有正确合并。我使用 documentation:
中所示的以下 ApplicationLoaderpackage 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): _*)
}
}