需要的依赖
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.23</version>
</dependency>
代码如下
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @author
* @version 1.0
* @description 获取自定义配置文件的变量
* @date 2021/3/14 22:11
*/
public class EnvVariableUtil {
private static final String TANK_YML = "tank.yml";
private static final Map<String, String> envVariable = new HashMap<String, String>();
/**
* 通过key获取定义的变量
*
* @param key
* @return
*/
public static String getValueFromEnv(String key) {
return envVariable.get(key);
}
static {
InputStream inputStream = EnvVariableUtil.class.getClassLoader().getResourceAsStream(TANK_YML);
Yaml yaml = new Yaml();
Map map = yaml.loadAs(inputStream, Map.class);
parseMap(map,null);
}
private static void parseMap(Map map, String pre) {
map.forEach((k, v) -> {
if (v instanceof Map) {
parseMap((Map) v, pre == null ? (String) k : pre + "." + k);
} else {
envVariable.put(pre == null ? (String) k : pre + "." + k, String.valueOf(v));
}
});
}
public static void main(String[] args) {
System.out.println(EnvVariableUtil.getValueFromEnv("abc.c"));
System.out.println(EnvVariableUtil.getValueFromEnv("abc.b.c.d"));
}
}
yml文件如下
abc:
a: 1
b:
c:
d: 2