日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【小家Java】Java环境变量(Env)和系统属性(Property)详解---工具文章

發布時間:2024/1/1 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小家Java】Java环境变量(Env)和系统属性(Property)详解---工具文章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每篇一句

胡適說:大膽猜想,小心求證

前言

首先說明,這是一篇工具文章,主要記錄下我們Java環境變量和系統屬性,方便以后的查閱。

當程序中需要使用與操作系統相關的變量(例如:文件分隔符、換行符)時,Java提供了System類的靜態方法getenv()和getProperty()用于返回系統相關的環境變量與系統屬性。

  • getenv方法返回的變量大多與操作系統相關
  • getProperty方法返回的變量大多與java程序有關

系統屬性和環境變量都是key-value形式的。兩種機制都能用來將用戶定義的信息傳遞給 Java進程。

  • 環境變量產生更多的全局效應,因為它們不僅對Java子進程可見,而且對于定義它們的進程的所有子進程都是可見的。在不同的操作系統上,它們的語義有細微的差別,比如,不區分大小寫。

因此環境變量更可能有意料不到的副作用。程序中盡可能使用系統屬性。環境變量應該在需要全局效應的時候使用,或者在外部系統接口要求使用環境變量時使用(比如 PATH)

Demo

環境變量Env

使用System.getenv()獲取系統的所有環境變量的Map,注意它是一個UnmodifiableCollection,是一個只讀視圖

環境變量并不提供set方法,即沒有System.setEnv…方法

public static void main(String[] args) {Map<String, String> envMap = System.getenv();envMap.forEach((key, value) -> {System.out.println(key + "=" + value);});}

小吐槽一句:getenv()這個方法并沒有遵循駝峰規范,個人認為它是一種不規范的命名方式。Java.awt中有一個類(我記不太清楚了)所有方法命名都沒遵循駝峰,后來在1.1里就被另外一個類代替,自己被標記為過時了,課件JDK對標準的重視~~

下面看輸出結果,然后做解釋如下:

系統屬性Property

系統屬性的作用范圍沒那么大,所以Java是允許我們用API的方式.setProperty自己設置系統屬性的。

public static void main(String[] args) {Properties properties = System.getProperties();System.setProperty("myProperty", "自定義的系統屬性~"); // 允許自定義系統屬性properties.forEach((key, value) -> {System.out.println(key + "=" + value);});}

下面看輸出結果,然后做解釋如下:

匯總

下面是對常用的,我們更關注的key做了個文本總結,方便搜索、查閱。
環境變量:

USERPROFILE :用戶目錄 USERDNSDOMAIN :用戶域 PATHEXT :可執行后綴 JAVA_HOME :Java安裝目錄 TEMP :用戶臨時文件目錄 SystemDrive :系統盤符 ProgramFiles :默認程序目錄 USERDOMAIN :帳戶的域的名稱 ALLUSERSPROFILE :用戶公共目錄 SESSIONNAME :Session名稱 TMP :臨時目錄 Path :path環境變量 CLASSPATH :classpath環境變量 PROCESSOR_ARCHITECTURE :處理器體系結構 OS :操作系統類型 PROCESSOR_LEVEL :處理級別 COMPUTERNAME :計算機名 Windir :系統安裝目錄 SystemRoot :系統啟動目錄 USERNAME :用戶名 ComSpec :命令行解釋器可執行程序的準確路徑 APPDATA :應用程序數據目錄

系統屬性:

java.version Java :運行時環境版本 java.vendor Java :運行時環境供應商 java.vendor.url :Java供應商的 URL java.home &nbsp;&nbsp;:Java安裝目錄 java.vm.specification.version: Java虛擬機規范版本 java.vm.specification.vendor :Java虛擬機規范供應商 java.vm.specification.name &nbsp; :Java虛擬機規范名稱 java.vm.version :Java虛擬機實現版本 java.vm.vendor :Java虛擬機實現供應商 java.vm.name&nbsp; :Java虛擬機實現名稱 java.specification.version:Java運行時環境規范版本 java.specification.vendor:Java運行時環境規范供應商 java.specification.name :Java運行時環境規范名稱 java.class.version :Java類格式版本號 java.class.path :Java類路徑 java.library.path :加載庫時搜索的路徑列表 java.io.tmpdir :默認的臨時文件路徑 java.compiler :要使用的 JIT編譯器的名稱 java.ext.dirs :一個或多個擴展目錄的路徑 os.name :操作系統的名稱 os.arch :操作系統的架構 os.version :操作系統的版本 file.separator :文件分隔符 path.separator :路徑分隔符 line.separator :行分隔符 user.name :用戶的賬戶名稱 user.home :用戶的主目錄 user.dir:用戶的當前工作目錄

附:SpringBoot中"/env"端點的訪問結果:

飄紅的兩處就是對應著咱們本文的一些值。(可以看出它哥倆的優先級還是相對來說比較高的,比我們自定的配置文件application.properties的優先級高)

總結

這邊文章的意義一方面是作為工具文章,方便查閱。另一方面是為了解Spring的環境、屬性配置機制做鋪墊,讓能有個更快的了解。

其實Spring對環境變量、配置管理的了解程度,將直接影響到你對SpringBoot和Spring Cloud的深入學習,因為它哥倆基本上靠配置驅動了非常多的東西。比如Endpoint、Actuator、Enviroment等等,而環境變量和系統屬性是在此處、甚至在Maven中必不可少的一環~


關注A哥

AuthorA哥(YourBatman)
個人站點www.yourbatman.cn
E-mailyourbatman@qq.com
微 信fsx641385712
活躍平臺
公眾號BAT的烏托邦(ID:BAT-utopia)
知識星球BAT的烏托邦
每日文章推薦每日文章推薦

總結

以上是生活随笔為你收集整理的【小家Java】Java环境变量(Env)和系统属性(Property)详解---工具文章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。