Spring Boot中优雅的获取yml文件工具类
更新时间:2018年12月07日 10:06:56 作者:执笔记忆的空白
今天小编就为大家分享一篇关于Spring Boot中优雅的获取yml文件工具类,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
如何在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;
/**
* yml文件工具类
*/
public class YmlUtils {
private static String bootstrap_file = "bootstrap.yml";
private static Map<String,String> result = new HashMap<>();
/**
* 根据文件名获取yml的文件内容
* @return
*/
public static Map<String,String> 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<String,Object> param = (Map<String, Object>) obj;
for(Map.Entry<String,Object> entry:param.entrySet()){
String key = entry.getKey();
Object val = entry.getValue();
if(val instanceof Map){
forEachYaml(key,(Map<String, Object>) val);
}else{
result.put(key,val.toString());
}
}
return result;
}
/**
* 根据key获取值
* @param key
* @return
*/
public static String getValue(String key){
Map<String,String> map = getYmlByFileName(null);
if(map==null)return null;
return map.get(key);
}
/**
* 遍历yml文件,获取map集合
* @param key_str
* @param obj
* @return
*/
public static Map<String,String> forEachYaml(String key_str,Map<String, Object> obj){
for(Map.Entry<String,Object> 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<String, Object>) val);
}else{
result.put(str_new,val.toString());
}
}
return result;
}
/**
* 获取bootstrap.yml的name
* @return
*/
public static String getApplicationName(){
return getYmlByFileName(bootstrap_file).get("spring.application.name");
}
/**
* 获取bootstrap.yml的name
* @return
*/
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());
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
相关文章
SpringCloud Zuul和Gateway的实例代码(搭建方式)
本文主要介绍了SpringCloudZuul和SpringCloudGateway的简单示例,SpringCloudGateway是推荐使用的API网关解决方案,基于SpringFramework5和ProjectReactor构建,具有更高的性能和吞吐量2025-02-02
idea配置springboot热部署终极解决办法(解决热部署失效问题)
这篇文章主要介绍了idea配置springboot热部署终极解决办法(解决热部署失效问题),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2020-07-07
mybatisPlus中apply的使用以进行联表等复杂sql语句详解
在MyBatis-Plus中,`apply()`方法可以用于添加任意的SQL片段,包括联表查询,使用`apply()`方法的好处是可以直接添加原生的SQL片段,而不受MyBatis-Plus提供的常规查询条件构建方法的限制,但是,使用`apply()`方法需要注意安全性和性能问题2025-03-03
Spring 整合Shiro 并扩展使用EL表达式的实例详解
Shiro是一个轻量级的权限控制框架,应用非常广泛。本文的重点是介绍Spring整合Shiro,并通过扩展使用Spring的EL表达式。需要的朋友可以参考下2018-03-03
springboot使用Thymeleaf报错常见的几种解决方案
这篇文章主要介绍了springboot使用Thymeleaf报错常见的几种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11


最新评论