引自:https://blog.csdn.net/zhen8023wan/article/details/38460389
問題的由來,想在測試機環境下搞測試,然后不想修改搞到線上環境的時候,自動把本地測試的代碼去掉,第一反應的是使用ip判斷,但是某些時候也許沒有request參數,那么我們變通一下,只需要在測試環境上搞一個自定義的環境變量,然后用來作為判斷條件即可。
假設設置了環境變量MYNAME, 值為”this is my name”, 運行如下代碼:
System.out.println("using getenv: "+ System.getenv("MYNAME")); System.out.println("using getProperty: "+ System.getProperty("MYNAME"));
結果分別為:
using getenv: this is my name
using getProperty: null
另試了如下代碼:
java.util.Properties p = System.getProperties(); java.util.Enumeration keys = p.keys(); while( keys.hasMoreElements() ) { System.out.println( keys.nextElement()); }
結果根本沒有MYNAME 這個變量!
那么怎么解決呢,需要明白這一點 System.getProperty(“MYNAME”) 只有當你運行 java -DMYNAME=JACK MyClass,這樣好辦了,我們只需修改服務容器比如resin的啟動腳本 加上一個 -D自定義參數 即可。