如何使用类型安全的配置库只渲染文件内容?

how to use typesafe config library just render file content?

我正在使用 myConfig.root().render(ConfigRenderOptions.concise().setFormatted(true))) 打印我的配置 content.But 我发现它包含许多其他信息,例如未定义的 "version" : "2.4.16""stdout-loglevel" : "WARNING" 等在我的配置文件中。
信息来自哪里?
我怎样才能打印我的配置文件内容?

您可能正在使用 Akka 2.4.16(直接或间接),在这种情况下,"extra" 配置设置是从 reference.conf, as described in the documentation 中提取的。 reference.conf 包含所有默认配置设置,您的 application.conf 可以覆盖任何这些设置。

ActorSystemreference.conf 与您的 application.conf 合并,如 here 所示。我不认为有一种方法可以通过 Typesafe Config API 来呈现 application.conf 的内容而不包括来自 reference.conf.

的合并设置

我使用 parseResourcesAnySyntax 方法通过 myConfigdefault 单独渲染配置:

object DataServiceConfig {
  val local = ConfigFactory.parseResourcesAnySyntax("local")
  val online = ConfigFactory.parseResourcesAnySyntax("online")
  val develop = ConfigFactory.parseResourcesAnySyntax("application") //develop environment
  val default = ConfigFactory.load("application") //default environment

  val myConfig = local.withFallback(online).withFallback(develop)
  val combinedConfig = myConfig.withFallback(default)

  def printConf(config: Config): Unit = println(config.root().render(ConfigRenderOptions.concise().setFormatted(true).setJson(true)))


}

打印配置:DataServiceConfig.printConf(DataServiceConfig.myConfig)

您可以使用 java.util.Properties 来获取您的文件内容,如下所示:

def getPropByFileName(fileName: String) = {
    val inputStream = this.getClass.getClassLoader.getResourceAsStream(fileName)
    val props = new Properties()
    props.load(inputStream)
    props
}