我需要在加载配置文件之后但在应用程序实际启动之前读取一些配置值.
在Play 2.3.x中,我曾使用覆盖GlobalSettings.onLoadConfig,这在Play 2.4.x中已弃用.官方文档说应该使用GuiceApplicationBuilder.loadConfig.
再次,文档有点差,我无法找到更多的细节或示例……所以任何帮助将非常感激.
解决方法
1.应用程序启动之前
如果您需要在应用程序启动之前读取配置,可以使用以下方法:
模块/ CustomApplicationLoader.scala:
package modules import play.api.ApplicationLoader import play.api.Configuration import play.api.inject._ import play.api.inject.guice._ class CustomApplicationLoader extends GuiceApplicationLoader() { override def builder(context: ApplicationLoader.Context): GuiceApplicationBuilder = { println(context.initialConfiguration) // <- the configuration initialBuilder .in(context.environment) .loadConfig(context.initialConfiguration) .overrides(overrides(context): _*) } }
conf / application.conf添加了以下内容:
play.application.loader = "modules.CustomApplicationLoader"
有了这个,我在控制台中看到以下内容(剪断太长):
Configuration(Config(SimpleConfigObject({"akka":{"actor":{"creation-timeout":"20s"...
资料来源:documentation.
2.不在应用程序启动之前
如果您不需要在应用程序启动之前读取配置,则可以使用此方法:(这非常简单)Module绑定方法需要Play环境和配置才能阅读:
class HelloModule extends Module { def bindings(environment: Environment,configuration: Configuration) = { println(configuration) // <- the configuration Seq( bind[Hello].qualifiedWith("en").to[EnglishHello],bind[Hello].qualifiedWith("de").to[GermanHello] ) } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。