参考com.typesafe.config
库,我注意到虽然有可用于将值解析为Integer
,Boolean
等的方法,但没有可用于解析值的方法自定义对象。我是对的吗?
https://lightbend.github.io/config/latest/api/com/typesafe/config/Config.html
我想创建一个包含以下值的配置文件
cookieName: String = "id",
cookiePath = "/",
cookieDomain = None,
secureCookie = true,
httpOnlyCookie = true,
useFingerprinting = true,
cookieMaxAge = None,
authenticatorIdleTimeout = None,
authenticatorExpiry: = 12 hours
并将其解析为案例类
case class CookieAuthenticatorSettings(
cookieName: String ,
cookiePath: String ,
cookieDomain: Option[String] ,
secureCookie: Boolean ,
httpOnlyCookie: Boolean,
useFingerprinting: Boolean ,
cookieMaxAge: Option[FiniteDuration] ,
authenticatorIdleTimeout: Option[FiniteDuration] ,
authenticatorExpiry: FiniteDuration
)
我怎么能这样做?在下面的代码片段中,我看到一个方法'as'已被使用,但当我尝试在我的代码中使用它时,编译器找不到'as'方法。
val config = configuration.underlying.as[JcaSignerSettings]("silhouette.oauth1TokenSecretProvider.signer")
以上代码来自https://github.com/mohiva/play-silhouette-seed/blob/master/app/modules/SilhouetteModule.scala
答案 0 :(得分:0)
您将需要使用this之类的东西来利用Scala implicit
的用法。它的默认行为是,只要配置中的字段名称与case类中的对象匹配,就可以弄清楚所需的对象,但是您也可以提供自己的读取器以将config字段映射到case类。
我在自己的项目中使用了这个库,我可以说它按宣传的方式工作。
答案 1 :(得分:0)
签出https://github.com/kxbmap/configs
您可以做类似的事情
case class MyConfig(foo: String, bar: Int, baz: List[FiniteDuration])
val config = ConfigFactory.parseString("""
my-config {
foo = My config value
bar = 123456
baz = [1h, 2m, 3s]
}
""")
val result = config.get[MyConfig]("my-config")