Scala - play2 配置获取部分
Scala - play2 config get section
我决定用 play2 试用 scala。我试图以某种方式从应用程序配置中获取配置部分。看起来像这样(按部分我指的是整个邮件部分)
services: {
rest: {
mail: {
uri: "xyz",
authorization: {
username: "xyz",
password: "xyz"
}
}
}
}
代码
import com.typesafe.config.ConfigObject
import play.api.Play.current
val config: Option[ConfigObject] = current.configuration.getObject("services.rest.mail")
这给了 Some(SimpleConfigObject())
并且通过那里我能够真正获得 mail
部分并将其用作 ConfigObject
的唯一方法是通过
config.get.toConfig.getString("uri")
或者我可以用
得到实际值
config.get.get("uri").unwrapped().toString
或者为了好玩:
config.get.toConfig.getObject("authorization").toConfig.getString("username")
不管怎样,在我看来,我做的太复杂了。有没有更简单的方法从配置中获取部分?
由于配置库有一个 Java API,在 Scala 中使用它会感觉有点冗长。尽管有一些 Scala 包装器可以实现更紧凑的语法。参见 https://github.com/typesafehub/config#scala-wrappers-for-the-java-library。
我会post将此作为答案以备将来参考。
在又一次使用代码后,我发现 parseResourcesAnySyntax
方法完全符合我的要求,因为我将我的配置分成多个部分用于不同的环境(application.dev.conf,等等。 ) 我可以简单地做
import com.typesafe.config.{Config, ConfigFactory}
import play.api.Play._
val config: Config = ConfigFactory.parseResourcesAnySyntax("application.%s.conf" format current.mode)
然后使用
config.getString("uri")
// or
config.getString("authorization.username")
// or if I want to use part of it as another section
val section: Config = config.getConfig("authorization")
section.getString("username")
当然,另一个可行的替代方案是使用 Stebel 先生推荐的包装器。
我决定用 play2 试用 scala。我试图以某种方式从应用程序配置中获取配置部分。看起来像这样(按部分我指的是整个邮件部分)
services: {
rest: {
mail: {
uri: "xyz",
authorization: {
username: "xyz",
password: "xyz"
}
}
}
}
代码
import com.typesafe.config.ConfigObject
import play.api.Play.current
val config: Option[ConfigObject] = current.configuration.getObject("services.rest.mail")
这给了 Some(SimpleConfigObject())
并且通过那里我能够真正获得 mail
部分并将其用作 ConfigObject
的唯一方法是通过
config.get.toConfig.getString("uri")
或者我可以用
得到实际值config.get.get("uri").unwrapped().toString
或者为了好玩:
config.get.toConfig.getObject("authorization").toConfig.getString("username")
不管怎样,在我看来,我做的太复杂了。有没有更简单的方法从配置中获取部分?
由于配置库有一个 Java API,在 Scala 中使用它会感觉有点冗长。尽管有一些 Scala 包装器可以实现更紧凑的语法。参见 https://github.com/typesafehub/config#scala-wrappers-for-the-java-library。
我会post将此作为答案以备将来参考。
在又一次使用代码后,我发现 parseResourcesAnySyntax
方法完全符合我的要求,因为我将我的配置分成多个部分用于不同的环境(application.dev.conf,等等。 ) 我可以简单地做
import com.typesafe.config.{Config, ConfigFactory}
import play.api.Play._
val config: Config = ConfigFactory.parseResourcesAnySyntax("application.%s.conf" format current.mode)
然后使用
config.getString("uri")
// or
config.getString("authorization.username")
// or if I want to use part of it as another section
val section: Config = config.getConfig("authorization")
section.getString("username")
当然,另一个可行的替代方案是使用 Stebel 先生推荐的包装器。