一、為什么將配置文件放在java project外倒得?
在java應(yīng)用中經(jīng)常會(huì)用到配置文件,配置文件中定義了程序運(yùn)行所需要的一些配置信息,而配置文件既以放在java project內(nèi)部(在給java project打jar包時(shí)將配置文件打在jar包內(nèi)部)芝发,也可以放在java project外部。
在生產(chǎn)環(huán)境中比較可取的是:配置文件放在java project外部苛谷。這是因?yàn)椋?/p>
當(dāng)一個(gè)java程序運(yùn)行在生產(chǎn)環(huán)境時(shí)辅鲸,通常由運(yùn)維人員來(lái)負(fù)責(zé)維護(hù)程序,如果有些配置信息需要修改腹殿,維護(hù)人員更改配置文件并重啟程序即ok了独悴。顯而易見(jiàn)如果配置文件打包在jar包內(nèi)部的話,修改配置文件就很繁瑣锣尉,有時(shí)候甚至需要開(kāi)發(fā)人員重新修改配置文件刻炒、重新打jar包并替換就jar。但是這種行為在生產(chǎn)環(huán)境中通常是不被允許的自沧,因此就需要將配置文件放在jar包外部坟奥。
那么如何讀取jar包外的配置文件呢?其和讀取jar包內(nèi)的配置文件不同拇厢。關(guān)于讀取jar包內(nèi)的配置文件方法可以參考:http://www.reibang.com/p/bd7d7a2891f8
二爱谁、java讀取jar包外的配置文件
2.1? 在intellij idea中新建一個(gè)Java project(基于maven)
2.2 新建配置文件
step 1.? intellij idea中選中工程(即圖中的test123)并右擊 --> new? --> directory,輸入目錄名res(也可以是其他命名)孝偎。
step 2. 選中新建的res目錄并右擊 --> mark directory as --> resources root访敌,即可得到圖中的res目錄(注意res右下角出現(xiàn)了黃色的橫杠)。(該步驟很關(guān)鍵)
step 3. 選中res目錄并右擊 --> new ---> file衣盾,輸入myCanal.properties(myCanal也可以改為其他)寺旺,打開(kāi)myCanal.properties并輸入配置信息并保存荡陷,例如:
????mysqlInstanceName=test1
????mysqlSchemaName=alex
其中mysqlInstanceName和mysqlSchemaName都為屬性的鍵key,?test1和alex分別為其對(duì)應(yīng)的屬性值value。
2.3 讀取配置文件的業(yè)務(wù)代碼
import java.io.*;
import java.util.Properties;
public class Main {
????public static void main(String[] args)throws IOException {
????????Properties prop =new Properties();
? ? ? ? InputStream inputStream =null;
? ? ? ? try {
????????????prop.load(new FileInputStream("res/myCanal.properties"));
/* 注釋:也可以直接在src/main/resources目錄下新建配置文件迅涮,但是new FileInputStream("res/myCanal.properties")需要改為new FileInputStream("src/main/resources/myCanal.properties") */
? ? ? ? }catch (FileNotFoundException e) {
????????????e.printStackTrace();
? ? ? ? }catch (IOException e) {
????????????e.printStackTrace();
? ? ? ? }
? ? ? System.out.println(prop.getProperty("mysqlSchemaName"));
? ? ? System.out.println(prop.getProperty("mysqlInstanceName"));
? ? }
}
2.4? maven打包jar(配置文件不需要打入jar包)
打jar包方法網(wǎng)上有很多
2.5? 將打包好的jar和intellij idea的test123工程下的res文件夾(包含配置文件)復(fù)制到*同一級(jí)目錄下*(服務(wù)器或本機(jī)上運(yùn)行該程序的地方)
(注意是*同一級(jí)目錄下*废赞,這很關(guān)鍵,否則程序會(huì)找不到該配置文件)
2.6 啟動(dòng)jar讀取配置文件
在jar所在的路徑叮姑,運(yùn)行下面命令即可:
java -classpath abc-1.0.jar Main
其中abc-1.0.jar為打包好的jar唉地,Main為主類
當(dāng)然主類也可以直接定義在pom.xml文件中,具體方法可以參考網(wǎng)上传透。