System.getProperty浅析

her0kings1ey

背景

最近在阅读一些框架代码中看到在代码中使用了System.getProperty来获取值,之前在想这个值是从哪里设置的呢?于是便写下这篇小文记录一下。

浅析

首先我们看看System.getProperties() 的注释。

/**
     * Determines the current system properties.
     * 得到当前系统属性
     * 

* First, if there is a security manager, its * 首先,如果存在安全管理器, * checkPropertiesAccess method is called with no * arguments. This may result in a security exception. * 会调用其checkPropertiesAccess无参方法,有可能抛出安全异常 *

* The current set of system properties for use by the * 当前系统属性集会通过Property对象返回(对象有getProperty()方法) * {@link #getProperty(String)} method is returned as a * Properties object. If there is no current set of * 如果当前没有系统属性集,会创建并初始化系统属性集。 * system properties, a set of system properties is first created and * initialized. This set of system properties always includes values * 系统属性通常包括了 * java.version、java.vendor等等 * for the following keys: *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
KeyDescription of Associated Value
java.versionJava Runtime Environment version
java.vendorJava Runtime Environment vendor
java.vendor.urlJava vendor URL
java.homeJava installation directory
java.vm.specification.versionJava Virtual Machine specification version
java.vm.specification.vendorJava Virtual Machine specification vendor
java.vm.specification.nameJava Virtual Machine specification name
java.vm.versionJava Virtual Machine implementation version
java.vm.vendorJava Virtual Machine implementation vendor
java.vm.nameJava Virtual Machine implementation name
java.specification.versionJava Runtime Environment specification version
java.specification.vendorJava Runtime Environment specification vendor
java.specification.nameJava Runtime Environment specification name
java.class.versionJava class format version number
java.class.pathJava class path
java.library.pathList of paths to search when loading libraries
java.io.tmpdirDefault temp file path
java.compilerName of JIT compiler to use
java.ext.dirsPath of extension directory or directories * Deprecated. This property, and the mechanism * which implements it, may be removed in a future * release.
os.nameOperating system name
os.archOperating system architecture
os.versionOperating system version
file.separatorFile separator ("/" on UNIX)
path.separatorPath separator (":" on UNIX)
line.separatorLine separator ("\n" on UNIX)
user.nameUser's account name
user.homeUser's home directory
user.dirUser's current working directory
*

* Multiple paths in a system property value are separated by the path * separator character of the platform. *

* Note that even if the security manager does not permit the * getProperties operation, it may choose to permit the * {@link #getProperty(String)} operation. * * @return the system properties * @exception SecurityException if a security manager exists and its * checkPropertiesAccess method doesn't allow access * to the system properties. * @see #setProperties * @see java.lang.SecurityException * @see java.lang.SecurityManager#checkPropertiesAccess() * @see java.util.Properties */

从这里可以看到这里主要能够拿到一些关于Java的系统属性,如:java版本,java的vendor,操作系统版本等等。另外,还能够运行java命令时,通过-D参数来指定系统属性,这也就是在一些框架内我们会看见使用System.getProperty来获取一些我们自定义的属性值。

关于java System能获取的属性值,请看这里

什么时候要使用System.getProperty

  1. 可以获取系统环境信息。

  2. 作为轻量级的配置文件使用,如:可以配置项目的运行路径、项目的配置文件路径等等

你可能感兴趣的:(System.getProperty浅析)