Play框架中调用Config的as方法报错:无法找到`as`方法
解决Config中找不到
as方法的问题 你遇到的问题根源很清晰:configuration.underlying返回的是原生的Typesafe Config对象(com.typesafe.config.Config),这个类本身并没有as方法——as是Play框架play.api.Configuration类提供的扩展方法,专门用来将配置值转换为自定义类型。
正确的写法
既然BuiltInComponentsFromContext已经提供了play.api.Configuration类型的configuration变量,直接用它调用as方法就可以了,完全不需要访问underlying属性:
val settings = configuration.as[CookieSecretSettings]("silhouette.oauth1TokenSecretProvider")
如果你确实需要使用原生Config对象
如果出于某些原因必须操作underlying(原生Config),可以借助Play的ConfigLoader来完成类型转换:
import play.api.ConfigLoader val settings = ConfigLoader[CookieSecretSettings].load(configuration.underlying, "silhouette.oauth1TokenSecretProvider")
额外注意事项
要确保CookieSecretSettings有对应的ConfigLoader实例:
- 如果它是一个case class,Play 2.6及以上版本会自动为它生成
ConfigLoader,无需额外代码 - 如果是自定义的非case class类型,你需要手动实现
ConfigLoader[CookieSecretSettings]隐式实例
内容的提问来源于stack exchange,提问作者Manu Chadha
相关产品推荐
相关产品推荐

