正确处理ConfigFactory Load错误的方法

时间:2017-03-22 21:32:43

标签: scala configuration typesafe-config

我的应用程序选择了要加载的配置文件:

-Dconfig.file=src/main/resources/dev.conf

我创建了一个设置特征,因此我可以轻松扩展设置,并可以在我的应用中访问这些变量。在实现中,我以下列方式使用ConfigFactory:

val config = ConfigFactory.load()

这是一个问题。如果不存在指定'dev.conf'的参数,那么这将查找'application.conf'等等,并且不会设置'dev.conf'中的变量。该应用程序稍后会在尝试获取不在conf中的内容时爆炸。

一旦我知道没有设置配置文件,我怎么能在这里方便地爆发?那'conf'值不是null / None而且我没有直接访问可能已经传入的'dev.conf'参数。

1 个答案:

答案 0 :(得分:0)

而不是使用ConfigFactory.load(),  你可以用

ConfigFactory.parseFile(new File(pathToYourConfig))

这将确保正在使用-Dconfig选项中的文件,并且该文件是可解析的。

要确保配置文件包含所有必填字段,您必须进行完整性检查。我喜欢实例化一个类,它将我需要的所有配置字段分配给val,比如

class Settings(conf: Config) {
      val projectName = conf.getString("projectName")
      val database = conf.getString("database")
}

现在在应用程序启动时,如果在-Dconfig.file指定的配置文件中不存在该字段,则该类将抛出异常