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自定义参数 即可。

posted @ 2020-03-29 10:01  志不坚者智不达  阅读(1355)  评论(0编辑  收藏  举报