我是Scala的新手,使用Scala和Akka开发RESTful API,需要从XML文件中读取绑定配置,该文件包含以下部分。
<appconfig>
<bindproperties>
<host>localhost</host>
<port value="7777"/>
</bindproperties>
</appconfig>
我想先从磁盘验证并读取该文件(如果存在)并加载它。如果它不存在,那么我想从默认的资源路径加载。目前,我的工作如下:
val stream = getClass.getResourceAsStream("/config/PreferencesServiceConfiguration.xml")
val appSettings = scala.xml.XML.load(stream)
def bindHost : String = { (appSettings \ "bindproperties" \ "host").text.toString }
def bindPort : Int = { (appSettings \ "bindproperties" \ "port" \ "@value").toString.toInt }
但是这总是从嵌入JAR文件的资源文件读取,而不是从磁盘读取。
任何人都可以指导我如何做到这一点?我想要逻辑流程如下:
否则
从AppSettings中读取属性
答案 0 :(得分:0)
作为更好的选择,请使用Config(com.typesafe.Config)加载配置。您可以将默认配置作为reference.conf。您提到的所有设置都可以放入此配置文件中。
但是,如果您想从磁盘加载XML文件。我建议,在运行时在标准位置(包括部署目录或部署目录的相对路径)进行配置检查。如果此检查失败,您可以回退到嵌入式资源。
再次将Config评分高于此值,因为如果未提供外部配置,您可以定义回退。