Java 读取环境配置信息System.getenv()和System.getProperty()使用详解

文章介绍了Java中用于读取环境配置信息的两种方法:System.getenv()和System.getProperty()。

前者读取系统环境变量,返回一个不可修改的Map;

后者获取JVM环境变量值,可以通过-D参数设置。

文章还提到,通过这两种方法可以简化配置,不需要修改代码。

一、System.getenv()

System.getenv()读取的是当前系统环境的环境变量。
要深入理解环境变量的本质,需要对系统父子进程关系有更加清晰的认识。
一般来说,子进程在创建时,会将父进程当时的环境变量复制一份,而父进程中之后发生的环境变量的变动,不会影响子进程中对应的环境变量。
当不传入参数时,System.getenv()的返回值为一个只读的Map,其中包括当前环境下所有环境变量。

二、System.getProperty()

通过 System.getProperty(key)获取单个变量值,通过System.getPropertys() 获取所有 JVM 环境变量值。

当我们通过 启动JVM时,可以通过 -D 设置JVM 环境变量值,在我们的程序中我们也可以通过,System.setProperty(key,value) 设置JVM 环境变量,该值在整个JVM 间是共享的。

三、简单示例

import lombok.extern.slf4j.Slf4j;

import java.util.Map;

@Slf4j
public class Demo {

    public static void main(String[] args) {
        Map<String, String> map = System.getenv();
        for (String s: map.keySet()) {
            log.info("{} => {}", s, map.get(s));
        }
        log.info("========================");

        System.getProperties().forEach((k, v) -> {
            log.info("{} => {}", k, v);
        });
        log.info("========================");

        String userName = System.getProperty("user.name", "unknown");
        log.info("user.name => {}", userName);
    }
}

通过 System.getenv() 和 getProperty() 可以简化我们的有些配置,相比于 xml 等配置文件。
这种方式更轻量,如果我们的程序中没有配置文件,但想使某一两项功能实现可配置,通过System.getenv() 和 getProperty()可以非常容易的实现。

 

posted @ 2025-04-11 09:29  都是城市惹的祸  阅读(207)  评论(0)    收藏  举报