如何解决强制pureconfig使用-dconfig.file application.conf文件而不是资源application.conf
# App
tables = [
"table_1","talbe_2"
]
和以下scala代码:
import pureconfig._
import pureconfig.generic.auto._
import com.typesafe.config.ConfigFactory
import pureconfig.generic.ProductHint
case class Configuration(tables: Array[String])
object Config {
implicit def hint[A] = ProductHint[A](ConfigFieldMapping(CamelCase,CamelCase))
val conf = ConfigSource.fromConfig(ConfigFactory.load("application.conf")).load[Configuration] match {
case Right(conf) => conf
case Left(failures) => throw new Exception(s"Unable to load the configuration ${failures.toList.mkString("\n")}")
}
}
object Test extends App {
val res = Config.conf.tables
println("hello")
}
当我将application.conf放到资源文件夹中时,它可以工作。但这在我使用时不起作用
-Dconfig.file=C:/Users/path/to/application.conf
尽管使用了-Dconfig.file参数,它仍使用资源application.conf文件。 你有什么主意吗?
解决方法
问题出在电话上
ConfigFactory.load("application.conf")
来自scaladocs
从给定的类路径资源加载应用程序的配置 或类路径资源基本名称,将其夹在默认值之间 引用配置和默认替代,然后对其进行解析。
您必须使用
ConfigFactory.load()
其中
加载默认配置,等效于 加载(defaultApplication())
defaultApplication
支持config.file
如果系统属性为config.resource,config.file或config.url 设置,然后在那些指定的类路径资源,文件或URL 将使用属性而不是默认属性 应用程序。{conf,json,properties}类路径资源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。