环境变量获取、设置方式
·
1 环境变量介绍
1.1 系统级别环境变量
| 参数值 | 参数含义 |
|---|---|
| COLORFGBG | ‘15;0’ |
| COLORTERM | truecolor |
| COMMAND_MODE | unix2003 |
| DC | TE |
| ERROR_FORMAT_LOGGING_PATH | /tmp/error_monitor_log |
| INFOPATH | /opt/homebrew/share/info: |
| ITERM_PROFILE | Default |
| ITERM_SESSION_ID | w0t0p0:73AE3D8B-07BA-45B7-998D-633C71654EF8 |
| LANG | zh_CN.utf-8 |
| PATH | /usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin |
来源
- 系统自带
- shell主动写入,例如export、set命令
- docker容器构建时生成,例如ENV命令、k8s的configmap
1.2 JVM虚拟机级别环境变量
| 参数值 | 参数含义 |
|---|---|
| java.version | Java 运行时环境版本 |
| java.home | Java 安装目录 |
| java.vm.version | Java 虚拟机实现版本 |
| java.vm.vendor | Java 虚拟机实现供应商 |
| java.vm.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 | 用户的当前工作目录 |
来源
- java虚拟机自带
- java启动参数带入,例如-Dspring.profiles.active=smoke
- java编码主动写入,例如System.setProperty
- springboot 的application.properties
2 Java程序获取环境变量的方式
- System.getenv()
- 只能获取系统环境变量
- System.getProperty()
- 只能获取虚拟机级别环境变量
- apache 的工具类 SystemUtils.getEnvironmentVariable
- 实现是System.getenv(),只是多了默认值
- 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");
}
更多推荐
所有评论(0)