最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的System.getenv()和System.getProperty()使用詳解

 更新時(shí)間:2024年11月27日 08:54:43   作者:星辰鴻溟  
文章介紹了Java中用于讀取環(huán)境配置信息的兩種方法:System.getenv()和System.getProperty(),前者讀取系統(tǒng)環(huán)境變量,返回一個(gè)不可修改的Map;后者獲取JVM環(huán)境變量值,可以通過-D參數(shù)設(shè)置,文章還提到,通過這兩種方法可以簡(jiǎn)化配置,不需要修改代碼

System.getenv()和System.getProperty()是Java種常用的兩種讀取環(huán)境配置信息的方法,它們都是java.lang.System類的方法,用途有相似之處,但我們?cè)趯?shí)際使用中,需要更加注意二者的區(qū)別。

1. System.getenv()

System.getenv()讀取的是當(dāng)前系統(tǒng)環(huán)境的環(huán)境變量。

要深入理解環(huán)境變量的本質(zhì),需要對(duì)系統(tǒng)父子進(jìn)程關(guān)系有更加清晰的認(rèn)識(shí)。

一般來說,子進(jìn)程在創(chuàng)建時(shí),會(huì)將父進(jìn)程當(dāng)時(shí)的環(huán)境變量復(fù)制一份,而父進(jìn)程中之后發(fā)生的環(huán)境變量的變動(dòng),不會(huì)影響子進(jìn)程中對(duì)應(yīng)的環(huán)境變量。

當(dāng)不傳入?yún)?shù)時(shí),System.getenv()的返回值為一個(gè)只讀的Map,其中包括當(dāng)前環(huán)境下所有環(huán)境變量。

下面的例子中:

我們將打印出這條語句執(zhí)行時(shí)環(huán)境中所有的環(huán)境變量和它們對(duì)應(yīng)的值,在 windows 中是 用戶環(huán)境變量和系統(tǒng)環(huán)境變量的值,

System.getenv().forEach((key, value) -> {
    System.out.println(key + ":" + value);
});

注意:通過 System.getenv() 獲取的 Map 是不支持修改的,為了有更深入的理解,我們熟悉下這塊的代碼

  public static java.util.Map<String,String> getenv() {
      // ......
      return ProcessEnvironment.getenv();
  }

ProcessEnvironment.getenv() 該方法的核心邏輯如下,從以下代碼中可以看出,返回的 map 是通過Collections.unmodifiableMap() 處理的,因此,返回的map 是不能被修改的。

final class ProcessEnvironment extends HashMap<String,String>{
    private static final Map<String,String> theUnmodifiableEnvironment;
    static {
        theEnvironment  = new ProcessEnvironment();
		theUnmodifiableEnvironment
           	 = Collections.unmodifiableMap(theEnvironment);
    }
    // Only for use by System.getenv()
    static Map<String,String> getenv() {
        return theUnmodifiableEnvironment;
    }
}

一般我們?cè)诔绦蛑惺褂脮r(shí),一般不會(huì)獲取全部的系統(tǒng)環(huán)境變量,因而可以通過 System.getEnv(key) 獲取對(duì)應(yīng)環(huán)境變量的值。

 public static String getenv(String name) {
     // .....
     return ProcessEnvironment.getenv(name);
 }

2. System.getProperty()

通上,通過 System.getProperty(key)獲取單個(gè)變量值,通過System.getPropertys() 獲取所有 JVM 環(huán)境變量值。

如下:

System.getProperties().forEach((k,v) -> {
    System.out.println(k + "=" + v);
});

這里列出一些常見的

// classpath
sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;....
java.library.path=C:\Program Files\Java\jdk1.8.0_131\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;
file.separator=\
sun.jnu.encoding=GBK
java.version=1.8.0_131
java.vm.info=mixed mode

當(dāng)我們通過 啟動(dòng)JVM時(shí),可以通過 -D 設(shè)置JVM 環(huán)境變量值,在我們的程序中我們也可以通過,System.setProperty(key,value) 設(shè)置JVM 環(huán)境變量,該值在整個(gè)JVM 間是共享的。

使用場(chǎng)景

最近線上大數(shù)據(jù) Hadoop 集群開啟了Kerberos,為了讓業(yè)務(wù)盡量不改動(dòng)代碼的原則。

通過 System.getenv()System.getenv() 實(shí)現(xiàn)了業(yè)務(wù)代碼零改動(dòng)下,使用開啟Kerberos后的集群。

總結(jié)

通過 System.getenv()getProperty() 可以簡(jiǎn)化我們的有些配置,相比于 xml 等配置文件。

這種方式更輕量,如果我們的程序中沒有配置文件,但想使某一兩項(xiàng)功能實(shí)現(xiàn)可配置,通過System.getenv()getProperty()可以非常容易的實(shí)現(xiàn)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis事務(wù)原理與實(shí)戰(zhàn)深入解析

    MyBatis事務(wù)原理與實(shí)戰(zhàn)深入解析

    本文詳細(xì)解析了MyBatis事務(wù)的原理、配置與企業(yè)級(jí)實(shí)戰(zhàn)應(yīng)用,從核心基礎(chǔ)到原生JDBC事務(wù)和Spring聲明式事務(wù)的實(shí)現(xiàn),再到常見問題與解決方案,全面涵蓋了MyBatis事務(wù)的各個(gè)方面,幫助開發(fā)者深入理解并正確使用MyBatis事務(wù),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java中excel表數(shù)據(jù)的批量導(dǎo)入方法

    Java中excel表數(shù)據(jù)的批量導(dǎo)入方法

    這篇文章主要為大家詳細(xì)介紹了Java中excel表數(shù)據(jù)的批量導(dǎo)入方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • SpringAOP如何修改請(qǐng)求參數(shù)列表

    SpringAOP如何修改請(qǐng)求參數(shù)列表

    這篇文章主要介紹了SpringAOP如何修改請(qǐng)求參數(shù)列表問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring Security 7 響應(yīng)頭配置方法及其解決方案

    Spring Security 7 響應(yīng)頭配置方法及其解決方案

    本文詳細(xì)介紹了Spring Security中的HTTP安全響應(yīng)頭配置方法,重點(diǎn)分析了X-Frame-Options響應(yīng)頭沖突問題及其解決方案,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • 查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟

    查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟

    在日常的工作學(xué)習(xí)中可能需要用到不同版本的jdk,下面這篇文章主要給大家介紹了關(guān)于查找jdk安裝路徑并且切換多版本jdk的詳細(xì)步驟,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java利用Spire.Doc for Java實(shí)現(xiàn)Word轉(zhuǎn) PCL打印格式

    Java利用Spire.Doc for Java實(shí)現(xiàn)Word轉(zhuǎn) PCL打印格式

    在日常的企業(yè)級(jí)開發(fā)中,文檔處理是一個(gè)繞不開的話題,本文將介紹如何在 Java 后端環(huán)境中,利用 Spire.Doc for Java 庫,在不依賴 Microsoft Office 軟件的情況下,實(shí)現(xiàn) Word 文檔到 PCL 格式的轉(zhuǎn)換,感興趣的可以了解下
    2026-04-04
  • SpringMVC 異常處理機(jī)制與自定義異常處理方式

    SpringMVC 異常處理機(jī)制與自定義異常處理方式

    這篇文章主要介紹了SpringMVC 異常處理機(jī)制與自定義異常處理方式,具有很好的開車價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java對(duì)文件的隨機(jī)讀寫以及壓縮處理操作

    Java對(duì)文件的隨機(jī)讀寫以及壓縮處理操作

    這篇文章主要介紹了Java對(duì)文件的隨機(jī)讀寫以及壓縮處理操作,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • java實(shí)現(xiàn)畫圖板功能

    java實(shí)現(xiàn)畫圖板功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)畫圖板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析

    Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析

    這篇文章主要介紹了Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

岫岩| 合水县| 曲沃县| 宝清县| 广南县| 尼木县| 百色市| 巴林右旗| 新巴尔虎右旗| 腾冲县| 永福县| 油尖旺区| 西丰县| 宣恩县| 阜康市| 讷河市| 宁德市| 达孜县| 广西| 新巴尔虎右旗| 洛南县| 依兰县| 分宜县| 确山县| 蕲春县| 汨罗市| 射洪县| 巍山| 孝昌县| 长沙县| 泰和县| 姜堰市| 桦南县| 阿鲁科尔沁旗| 屏南县| 嫩江县| 新乐市| 宾川县| 永登县| 恭城| 自治县|