唐僧喜欢小龙女

导航

system property 和environment property 的区别

参考

https://blog.csdn.net/jjlovefj/article/details/82756443?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

 

系统变量(system property)和环境变量(enviroment property)的区别对于java应用开发者而言应该要区分清楚:

 

1. 概念说明

environment property: 是系统级的环境变量,系统当中所有的进程都可以访问到,下面示例查看windows系统和linux系统的环境变量:

centos7:

win7:

system property:是java应用程序自身指定的变量,通常我们可以在启动应用的时候指定的,格式是:-DsystemPropertyKey=systemPropertyValue;

下面我们截取tomcat启动bat脚本文件里面部分片段来了解:

 

2. 示例

我们通过如下代码来感受一下:

public class Demo {
    public static void main(String[] args) {
        System.out.println(System.getProperty("a"));
        System.out.println(System.getenv("b"));

        Properties props = System.getProperties();
        Set<Object> keys = props.keySet();

        for(Object key:keys){
           System.err.println(key);
        }
       Map<String, String> env = System.getenv();

       Set<String> keysw = env.keySet();

       for (String key : keysw) {
          System.out.println(key);
       }

    
    }
}

 

我们在idea里面进行运行配置

  

结果如下图

 

3、特别说明

System.getenv() 或者 System.getenv("a")  这里获取不到 配置文件中设置的值如server.port,server.port能通过 Environment 获取到

Environment 是个接口用来读取properties、yml、xml以及nosql文件中的key-value值的



同样的道理  Environment 获取不到system中的值

 

posted on 2021-08-04 16:12  与时具进&不忘初心  阅读(432)  评论(0编辑  收藏  举报