我的应用程序选择了要加载的配置文件:
-Dconfig.file=src/main/resources/dev.conf
我创建了一个设置特征,因此我可以轻松扩展设置,并可以在我的应用中访问这些变量。在实现中,我以下列方式使用ConfigFactory:
val config = ConfigFactory.load()
这是一个问题。如果不存在指定'dev.conf'的参数,那么这将查找'application.conf'等等,并且不会设置'dev.conf'中的变量。该应用程序稍后会在尝试获取不在conf中的内容时爆炸。
一旦我知道没有设置配置文件,我怎么能在这里方便地爆发?那'conf'值不是null / None而且我没有直接访问可能已经传入的'dev.conf'参数。
答案 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
指定的配置文件中不存在该字段,则该类将抛出异常