Java读取自定义环境变量的方法System.getProperty和System.getenv
引自: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自定义参数 即可。