HOCON:多引用.conf解析问题

  • 本文关键字:问题 conf 引用 HOCON hocon
  • 更新时间 :
  • 英文 :


我在SBT下有多模块项目。

工程A(库)的reference.conf文件中包含A的配置参数。A项目依赖于akka-actor库,它附带了自己的reference.conf文件。Project A在自己的reference.conf中重新定义了akka的一些参数。

项目B依赖于A

当我在B中调用ConfigFactory.load()时,我得到了reference.conf合并的错误顺序。它首先获取A的配置,然后在其上应用akka-actor的配置。最后,我得到了akka-actor的初始配置。

我该如何修复它?我需要得到akka-actor的配置加载第一,然后我的A的配置应该适用于它。

好的,看起来我已经在ConfigFactory的来源中找到了答案。

所有的reference.conf都通过ClassLoader.getResources加载。它返回java.util.Enumeration[URL]。这个enum中URL s的顺序就是这个问题的答案。因此,您需要做的是:确保reference.conf资源在此枚举中的顺序正确排列。

下面是如何做到这一点的一个例子。首先,通过重写getResources方法创建您自己的ClassLoader版本:

import scala.collection.JavaConverters._
class CustomClassLoader(loader: ClassLoader) extends ClassLoader(loader){
    override def getResources(name: String): util.Enumeration[URL] = {
        val resources = super.getResources(name).asScala.toList
        // arrange resources as you wish here
        java.util.Collections.enumeration(resources.asJava)
    }
}

最后,用CustomClassLoader实例调用ConfigFactoryload方法。

相关内容

  • 没有找到相关文章

最新更新