加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Play Framework 2.4.1:如何在加载配置文件后获取配置

发布时间:2020-12-16 18:17:02 所属栏目:安全 来源:网络整理
导读:我需要在加载配置文件之后但在应用程序实际启动之前读取一些配置值. 在Play 2.3.x中,我曾使用覆盖GlobalSettings.onLoadConfig,这在Play 2.4.x中已弃用.官方文档说应该使用GuiceApplicationBuilder.loadConfig. 再次,文档有点差,我无法找到更多的细节或示例
我需要在加载配置文件之后但在应用程序实际启动之前读取一些配置值.

在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]
    )
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读