Java-System.getProperties()和System.getenv()使用说明

背景

最近在看Zookeeper的源码,在初始化ContainerManager时使用Integer.getInteger(String,int)获取相关属性,而不是读取文件中的配置.

containerManager = new ContainerManager(zkServer.getZKDatabase(), zkServer.firstProcessor,
                    Integer.getInteger("znode.container.checkIntervalMs", (int) TimeUnit.MINUTES.toMillis(1)),
                    Integer.getInteger("znode.container.maxPerMinute", 10000)
            );

而在Integer.getInterger(String,int)中,调用了System.getProperty(String),因此便要解决一个问题:如果配置属性才能让System.getProperty(String)获取到?此外,Systm.getenv()System.getProperty()有何区别呢?

总结

由于上述两个问题在网上都有资料,现总结如下:

如果配置属性才能让System.getProperty(String)获取到?

使用java -D 配置系统属性.使用格式是:java -Dkey=value,如果value中有空格,则需要用双引号将该值括起来,如:-Dname="kazaf f"

Systm.getenv()System.getProperties()有何区别呢?

System.getenv()是获取系统环境变量,System.getProperties()是获取当前系统相关属性信息。
System.getenv():返回当前系统环境的字符串Map,其是不可变的,环境变量是系统相关的键值对,从父进程传递到子进程.如:JAVA_HOME,PATH等
System.getProperties():获取系统相关属性,比如:Java版本、操作系统信息、用户名等,这些跟JVM和操作系统相关的属性.如:java.version,os.name,user.dir,file.separator等

参考

猜你喜欢

转载自blog.csdn.net/jpf254/article/details/80753599