原創文章,歡迎轉載,轉載請註明出處!
很多時候我們需要在專案中讀取外部屬性檔案,用到了System.getProperty("")方法。這個方法需要配置JVM系統屬性,那麼如何配置呢?
那就是使用java -D 配置系統屬性。
使用格式是:java -Dkey=value
比如新建一個測試類,如下:
public class Test {
public static void main(String[] args){
System.out.println(System.getProperty("configurePath"));
}
}
這段程式碼直接執行的話,會輸出null
接下來需要配置configurePath屬性了,有兩種方法。
第一種方法是在啟動tomcat的時候配置:
比如在myeclipse中,選中這個專案,然後在工具欄中選擇"Run-->Run Confgurations“,然後在對話方塊的右邊選擇"Arguments,然後在VM arguments中輸入-DconfigurePath=hello。如下圖:
然後就會在控制檯輸出:hello
第二種方法是在執行java命令的時候配置:
將之前的測試類匯出為一個jar包,再控制檯使用命令執行:java -DconfigurePath=hello -jar Test.jar
也會得到hello
以下轉載自網路:
java -D 配置系統屬性
使用案例
其實,在不知不覺中我們已經在使用-D的引數項,比如用下面引數來配置檔案編碼:
-Dfile.encoding=UTF-8
再比如,用以下引數來配置dubbo的選項:
java -Ddubbo.reference.com.foo.BarService.check=false
java -Ddubbo.reference.check=false
java -Ddubbo.consumer.check=false
java -Ddubbo.registry.check=false
功能解析
-D=value
官網解釋:
Set a system property value. If value is
a string that contains spaces, you must enclose the string in double quotes:
在虛擬機器的系統屬性中設定屬性名/值對,執行在此虛擬機器上的應用程式可用:
System.getProperty("屬性名")
得到value的值。
如果value中有空格,則需要用雙引號將該值括起來,如:-Dname=”kazaf f”。
該引數通常用於設定系統級全域性變數值,如配置檔案路徑,保證該屬性在程式中任何地方都可訪問。
注意事項
(1)需要設定的是JVM引數而不是program引數;
(2)使用此引數的引數優先順序最高,會覆蓋專案中配置的此項;