springboot读取系统级环境变量,和读写系统属性以及unittest来获取环境变量的方法
环境变量的读取以及系统属性的设置 环境变量只能读取,不能修改,系统属性可以修改
系统变量的读取方式: System.getEnv()
系统属性有多重读取和修改方式:
其修改方式为:
- 读取系统属性:
@Autowired
AbstractEnvironment environment;
System.setProperty("today","tuesday");
environment.getProperty("test");
- 增加新的系统属性:
Map<String, Object> map = new HashMap<String, Object>();
map.put("hello","world");
MapPropertySource mapPropertySource = new MapPropertySource("VCAP_SERVICES", map);
environment.getPropertySources().addLast(mapPropertySource);
environment.getPropertySources().addFirst(mapPropertySource);
Test获取系统环境变量
有时候业务中需要读取环境变量时,而unittest又读取不到环境变量,System.getEnv()的值是null 此时就用到一个开源的包来解决这个问题了
testCompile("com.github.stefanbirkner:system-rules:1.16.1")
使用方法
创建一个自定义的SpringJUnit4ClassRunner类来集成SpringJUnit4ClassRunner类,设置环境变量, 其中@Rule注解代表可以运行在测试过程中创建临时文件或者临时目录,当测试结束后,框架会自动删除。
package tools;
import org.junit.Rule;
import org.junit.contrib.java.lang.system.EnvironmentVariables;
import org.junit.runners.model.InitializationError;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
public class MySpringJUnit4ClassRunner extends SpringJUnit4ClassRunner {
@Rule
public final EnvironmentVariables environmentVariables
= new EnvironmentVariables();
/**
* Construct a new {@code SpringJUnit4ClassRunner} and initialize a
* {@link TestContextManager} to provide Spring testing functionality to
* standard JUnit tests.
*
* @param clazz the test class to be run
* @see #createTestContextManager(Class)
*/
public MySpringJUnit4ClassRunner(Class<?> clazz) throws InitializationError {
super(clazz);
String str="hello world!";
environmentVariables.set("test", str);
}
}
下面是unittest
package tools;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import tools.MySpringJUnit4ClassRunner;
@RunWith(MySpringJUnit4ClassRunner.class)
public class Test {
@Test
public void should_return_test() throws AppException {
System.out.println(System.getenv("test"));
Assert.assertEquals("hello world", redisService.get("test"));
}
}
springboot读取系统级环境变量,和读写系统属性以及unittest来获取环境变量的方法的更多相关文章
- [CSAPP笔记][第十章 系统级I/O]
第十章 系统级I/O 输入/输出(I/O) : 是指主存和外部设备(如磁盘,终端,网络)之间拷贝数据过程. 高级别I/O函数 scanf和printf <<和>> 使用系统级I ...
- NX二次开发-UFUN获取环境变量路径,将环境变量转换为字符串,字符串拼接UF_translate_variable
NX9+VS2012 #include <uf.h> UF_initialize(); //UFUN获取环境变量路径 //将环境变量转换为字符串 char* GetName = NULL; ...
- java 27 - 4 反射之 通过反射获取成员变量并使用
类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...
- PHP 闭包获取外部变量和global关键字声明变量的区别
最近在学习workerman的时候比较频繁的接触到回调函数,使用中经常会因为worker的使用方式不同,会用这两种不同的方式去调用外部的worker变量,这里就整理一下PHP闭包获取外部变量和glob ...
- Linux 管理环境变量的文件分为系统级和用户级别
Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...
- bat-静默安装winrar并设置系统级环境变量
@echo off Setlocal enabledelayedexpansion @REM vscode中自动开启延迟环境变量扩展 echo 安装winrar "winrar v.5.71 ...
- [php基础]PHP环境变量$_SERVER和系统常量详细说明
在PHP网站开发中,为了满足网站的需要,时常需要对PHP环境变量进行设置和应用,在虚拟主机环境下,有时我们更需要通过PHP环境变量操作函数来对PHP环境变量值进行设置.为此我们有必要对PHP环境变量先 ...
- Java获取环境变量和系统属性
Java获取服务器环境变量和JVM系统变量 当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty() ...
- learning java 获取环境变量及系统属性
通过System.getenv( ) 获取环境变量 通过System.getProperties() 获取系统属情 通过System.currentTimeMillis() System.nanoT ...
随机推荐
- Fiddler常用功能总结
使用Fildder几年来,深深的体会到了其便利性,给工作带来了极大的便利,所以把其它常用功能总结如下 一:介绍 1.免费,支持抓取http.https协议,可独立运动 2.原理:(客户通过移动端或是P ...
- ElasticSearch5.2.2 安装(老版本)
https://www.elastic.co/downloads/elasticsearchElasticSearch是一个高可扩展的开源的全文搜索分析引擎.它允许你快速的存储.搜索和分析大量数据.E ...
- springboot 整合Elasticsearch
Elasticsearch Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,可用于实现全文搜索和实时数据统计. 在 ...
- delphi连接oracle数据库
使用ADO套接字连接: conn:= '(DESCRIPTION = '+ '(ADDRESS_LIST = '+ '(ADDRESS = (PROTOCOL = TCP)(HOST = '+host ...
- LODOP和C-LODOP注册与角色等简短问答【增强版】
之前的简短问答:Lodop.c-lodop注册与角色简短问答.Lodop简短问答客户反馈篇 及排查步骤 及注册相关本文重新整理相关简短问答,调整问答顺序,增加相关的问答. 其他相关(非简短问答):LO ...
- [LeetCode] 274. H-Index H指数
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- [LeetCode] 803. Bricks Falling When Hit 打击砖块掉落
We have a grid of 1s and 0s; the 1s in a cell represent bricks. A brick will not drop if and only i ...
- php利用crontab执行 5分钟发邮件给用户 (包含每分钟发一次)
php利用crontab执行 5分钟发邮件给用户 一开始设想用shell_exec执行sh 运行 crontab但发现并不可取 因为没办法传变量 (因为要传963529987@qq.com)所以决定采 ...
- Word2016经常复制公式卡死无响应如何解决?
Word文件 > 选项 > 高级 > 显示 > 禁用“硬件图形加速”
- Qt信号-槽原理剖析--(1)信号槽简介
唯有创造才是快乐.只有创造的生灵才是生灵.--罗曼·罗兰 信号槽是观察者模式的一种实现,特性如下: A.一个信号就是一个能够被观察的事件,或者至少是事件已经发生的一种通知: B.一个槽就是一个观察者, ...