浅谈System.getenv()和System.getProperty()的区别

 更新时间:2021年06月19日 14:18:11   作者:一步一台阶  
这篇文章主要介绍了System.getenv()和System.getProperty()的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

最近遇到一个需求,服务器实例需要获取当前的环境变量。经过查资料,发现环境变量可以在两个地方设置。

一、在系统层面设置环境变量

在系统层面设置环境变量,之前我们应该都操作过,以windows系统为例

System.getenv()可以获取的在这里设置的变量。

二、在java虚拟机层面设置环境变量

个人理解,System.getProperty()可以获取在JVM 层面的变量,有些变量在JVM启动后,就内置了,如:

参数值 参数含义
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name 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 文件分隔符(在 UNIX 系统中是“/” )
path.separator 路径分隔符(在 UNIX 系统中是“:” )
line.separator 行分隔符(在 UNIX 系统中是“/n” )
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录

还可以在代码层面,通过System.setProperty(key, value)把值设置进去。

或者web容器层面,在服务器容器启动时,把变量加进去,最终会传递给JVM。

例如我们公司之前用的,通过System.getProperty("weblogic.Name")获取服务的实例名称。

个人理解就是weblogic起启动服务是初始化到JVM中的。

或者可以直接在eclipse中的VM arguments添加,这样在该程序运行时,就自动生效了。

如下图:

System.getenv(String name)方法的意义和用法

最近工程里用到

String path = System.getenv(“config_path”);

这样取路径的方法。记录一下。

1.在windows中config_path指的是系统的环境变量。如:

此时取出来的path为:D:\work。有了这个路径就可以做一些读取文件的操作了。

2.在linux中config_path指的是在/etc/profile文件末尾配置环境变量 ​export config_path=XXX/XXX。(XXX/XXX为文件地址,退出保存,并​source /etc/profile​生效)。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot2.3集成ELK7.1.0的示例代码

    SpringBoot2.3集成ELK7.1.0的示例代码

    这篇文章主要介绍了SpringBoot2.3集成ELK7.1.0的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 最全Gson使用

    最全Gson使用

    GSON弥补了JSON的许多不足的地方,在实际应用中更加适用于Java开发,本文主要介绍了最全Gson使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • java开发AOP基础JdkDynamicAopProxy

    java开发AOP基础JdkDynamicAopProxy

    这篇文章主要为大家介绍了java开发AOP基础JdkDynamicAopProxy源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • SpringSecurit盐值加密的密码验证以及强密码验证过程

    SpringSecurit盐值加密的密码验证以及强密码验证过程

    在密码加密过程中,盐值的使用可以增强密码的安全性,如果忘记存储盐值,将无法验证密码,强密码应包含数字、字母和特殊字符,长度应在8到30位之间,以提高账户安全
    2023-03-03
  • 浅谈springfox-swagger原理解析与使用过程中遇到的坑

    浅谈springfox-swagger原理解析与使用过程中遇到的坑

    本篇文章主要介绍了浅谈springfox-swagger原理解析与使用过程中遇到的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Java基本语法之内部类示例详解

    Java基本语法之内部类示例详解

    本文带大家认识Java基本语法——内部类,将一个类定义放在另一类的定义的内部,这个就是内部类,内部类允许将一些逻辑相关的类组织在一起,并能够控制位于内部的类的可视性,感兴趣的可以了解一下
    2022-03-03
  • springBoot整合RocketMQ及坑的示例代码

    springBoot整合RocketMQ及坑的示例代码

    这篇文章主要介绍了springBoot整合RocketMQ及坑的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Hibernate validator使用以及自定义校验器注解

    Hibernate validator使用以及自定义校验器注解

    这篇文章主要介绍了Hibernate validator使用以及自定义校验器注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java编程代码性能优化

    Java编程代码性能优化

    本文介绍了 Java 代码优化的过程,总结了优化 Java 程序的一些最佳实践,分析了进行优化的方法,并解释了性能提升的原因,需要的朋友可以参考下
    2015-11-11
  • Spring Boot使用Druid进行维度的统计和监控

    Spring Boot使用Druid进行维度的统计和监控

    这篇文章主要介绍了Spring Boot使用Druid进行维度的统计和监控,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04

最新评论