如何在spring boot中优雅的获取.yml文件工具类呢
代码如下:
package com.common.base.utils.base;
import com.common.base.generator.ResourceManager;
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class YmlUtils {
private static String bootstrap_file = "bootstrap.yml";
private static Map result = new HashMap<>();
public static Map getYmlByFileName(String file){
result = new HashMap<>();
if(file == null)
file = bootstrap_file;
InputStream in = ResourceManager.class.getClassLoader().getResourceAsStream(file);
Yaml props = new Yaml();
Object obj = props.loadAs(in,Map.class);
Map param = (Map) obj;
for(Map.Entry entry:param.entrySet()){
String key = entry.getKey();
Object val = entry.getValue();
if(val instanceof Map){
forEachYaml(key,(Map) val);
}else{
result.put(key,val.toString());
}
}
return result;
}
public static String getValue(String key){
Map map = getYmlByFileName(null);
if(map==null)return null;
return map.get(key);
}
public static Map forEachYaml(String key_str,Map obj){
for(Map.Entry entry:obj.entrySet()){
String key = entry.getKey();
Object val = entry.getValue();
String str_new = "";
if(StringUtils.isNotNull(key_str)){
str_new = key_str+ "."+key;
}else{
str_new = key;
}
if(val instanceof Map){
forEachYaml(str_new,(Map) val);
}else{
result.put(str_new,val.toString());
}
}
return result;
}
public static String getApplicationName(){
return getYmlByFileName(bootstrap_file).get("spring.application.name");
}
public static String getApplicationName1(){
String name = getYmlByFileName(bootstrap_file).get("spring.application.name");
return name + "center";
}
public static void main(String[] args) {
System.out.println(getApplicationName());
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对考高分网的支持。如果你想了解更多相关内容请查看下面相关链接



