scala讀取jar包外配置文件的方式


  在scala的開發過程中,經常會修改程序的參數,將這些參數放到配置文件中避免了重復編譯,然而打包的過程,如果不做配置文件外置,將無法修改配置內容,還是需要重新打包

這里給出讀取配置文件的三種方式 

 方式一:

 這是最常見的讀取配置文件方式

val postgprop = new Properties()
val ipstream: InputStream = this.getClass().getResourceAsStream("/config.properties")
postgprop.load(ipstream)

在程序的任何地方輸入代碼,就能使通過下面的方式獲得key對應的value

  postgprop.getProperty("key.name")  

而配置文件的格式為

  key.name=value 

然而這種方式固定從src/main/resources獲取配置文件,打包時一並放入jar包中,修改較為麻煩

方式二:

通過 System.getProperty("user.dir") 的方式獲得當前路徑的絕對路徑,打成jar包運行時,一般就是java -jar或submit命令運行時的路徑,后面加上配置文件的路徑,如下

val filePath =System.getProperty("user.dir")//設定為jar包的絕對路徑 在IDE中運行時為project的絕對路徑
val postgprop = new Properties
val ipstream = new BufferedInputStream(new FileInputStream(filePath+"/conf/config.properties"))
postgprop.load(ipstream)

這樣就能在jar包范圍之外讀取配置文件了,但是,System.getProperty("user.dir")的方式較為固定,只能獲取當前路徑

方式三:

作為對方式二的改良,只需將獲取路徑的方式改變即可

val directory = new File("..")
val filePath = directory.getAbsolutePath //設定為上級文件夾 獲取絕對路徑

“."就表示當前的文件夾,而”..“則表示當前文件夾的上一級文件夾 

這樣就能靈活的設置路徑,而不像方式二,config的路徑必須是執行命令路徑

總結:

總的來說,提供了三種循序漸進的讀取配置文件的方式,其中方式二和方式三均能在jar包范圍之外讀取配置文件,避免了重復編譯,打包的過程

而方式一只能使用相對路徑,配置文件固定在src/main/resources中

特別注意:

特別要注意的是,在處理log4j的配置文件log4j.properties時有一些不同

val directory = new File("..")
val filePath = directory.getAbsolutePath //設定為上級文件夾 獲取絕對路徑
PropertyConfigurator.configure(filePath + "/conf/log4j.properties")

filePath的設置可以自己選用后兩種方式的哪一種,但是一定要是絕對路徑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM