类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置

Posted

技术标签:

【中文标题】类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置【英文标题】:Typesafe config: Load additional config from path external to packaged scala application 【发布时间】:2013-08-14 06:26:36 【问题描述】:

我的 scala 应用程序将被打包到一个 jar 中。当我运行我的应用程序时,它需要读取存储在我的应用程序 jar 外部的附加配置文件。我正在寻找类似于 Typesafe Config 库的功能,但也欢迎其他解决方案!有没有办法做如下的事情:

val hdfsConfig = ConfigFactory.load("my_path/hdfs.conf")

【问题讨论】:

【参考方案1】:

我想你想要的是:

val myCfg =  ConfigFactory.parseFile(new File("my_path/hdfs.conf"))

【讨论】:

这不会在配置中包含reference.conf;规范的方法是将parseFile 的结果夹在默认参考配置和默认覆盖之间,这看起来像val fileConfig = parseFile(); val myConfig = ConfigFactory.load(fileConfig) 这是什么File 类? java.io.Filescala.reflect.io.File? @EduardoBezerra,即java.io.File 如果我们在 parseFile() 的参数中包含其他 conf 文件,也可以读取吗? @WeiLin,我不确定我明白你的意思。您能更清楚地了解您要做什么吗?【参考方案2】:

如果您的外部配置是从标准位置添加或覆盖配置参数,您可以执行以下操作:

val baseConfig = ConfigFactory.load()
val config = ConfigFactory.parseFile(yourFile).withFallback(baseConfig)

其中yourFilejava.io.File 文档参考here

【讨论】:

【参考方案3】:
val config = ConfigFactory.load("pathtoFile/FileName.propertes") 

也可以。

【讨论】:

我相信只有当文件在类路径上时才有效。 确实,这个答案和这个question更相关

以上是关于类型安全配置:从打包的 scala 应用程序的外部路径加载附加配置的主要内容,如果未能解决你的问题,请参考以下文章

Spark Scala创建外部配置单元表不使用位置作为变量

springboot学习总结外部配置(命令行参数配置常规属性配置类型安全的配置之基于properties)

选择 Scala Web 框架 [关闭]

从 vagrant 运行类型安全激活器

scala读取jar包外配置文件的方式

Scala:通过包外的结构类型访问包可见方法