环境变量获取、设置方式

1 环境变量介绍

1.1 系统级别环境变量

参数值参数含义
COLORFGBG‘15;0’
COLORTERMtruecolor
COMMAND_MODEunix2003
DCTE
ERROR_FORMAT_LOGGING_PATH/tmp/error_monitor_log
INFOPATH/opt/homebrew/share/info:
ITERM_PROFILEDefault
ITERM_SESSION_IDw0t0p0:73AE3D8B-07BA-45B7-998D-633C71654EF8
LANGzh_CN.utf-8
PATH/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin

来源

  1. 系统自带
  2. shell主动写入,例如export、set命令
  3. docker容器构建时生成,例如ENV命令、k8s的configmap

1.2 JVM虚拟机级别环境变量

参数值参数含义
java.versionJava 运行时环境版本
java.homeJava 安装目录
java.vm.versionJava 虚拟机实现版本
java.vm.vendorJava 虚拟机实现供应商
java.vm.nameJava 虚拟机实现名称
java.class.versionJava 类格式版本号
java.class.pathJava 类路径
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用户的当前工作目录

来源

  1. java虚拟机自带
  2. java启动参数带入,例如-Dspring.profiles.active=smoke
  3. java编码主动写入,例如System.setProperty
  4. springboot 的application.properties

2 Java程序获取环境变量的方式

  1. System.getenv()
    • 只能获取系统环境变量
  2. System.getProperty()
    • 只能获取虚拟机级别环境变量
  3. apache 的工具类 SystemUtils.getEnvironmentVariable
    • 实现是System.getenv(),只是多了默认值
  4. spring 的注解 @Value
    • 能获取系统环境变量和虚拟机的环境变量,但在bean初始化时注入值

3 单测中模拟环境变量

3.1 虚拟机级别

System.setProperty

3.2 系统级别

先引入工具类

<dependency>  
    <groupId>com.github.stefanbirkner</groupId>  
    <artifactId>system-rules</artifactId>  
    <version>1.19.0</version>  
    <scope>test</scope>  
</dependency>

代码中使用

@ClassRule  
public static final EnvironmentVariables environmentVariables = new EnvironmentVariables();

@BeforeClass  
public static void beforeClass() {
	environmentVariables.set("LOAD_DETAIL_LOG", "true");
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值