网上查了大部分资料,读取yaml文件有两种方式:

(1)利用spring的@Value(${})的方式,但是这种方式往往要配合Spring容器去做。

(2)另一种方式脱离Spring容器,采用流的方式读取yaml文件,并生成java对象

每种方式都有其应用的场景。我根据(2)的方式简单写了一个读取Yaml的配置类,通过key的方式获取值。

例如:application.yml

a:b:c:d: hahahe: hehehf: heiheihei
g: xixixi

key的格式:

假如获取d的值,key的格式为:a.b.c.d

假如获取g的值,key的格式为:g

工具类如下:

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;import org.yaml.snakeyaml.Yaml;import lombok.extern.slf4j.Slf4j;@Slf4j
public class YamlReader {private static Map<String, Map<String, Object>> properties = new HashMap<>();/*** 单例*/public static final YamlReader instance = new YamlReader();static {Yaml yaml = new Yaml();try (InputStream in = YamlReader.class.getClassLoader().getResourceAsStream("application.yml");) {properties = yaml.loadAs(in, HashMap.class);} catch (Exception e) {log.error("Init yaml failed !", e);}}/*** get yaml property* * @param key* @return*/public Object getValueByKey(String key) {String separator = ".";String[] separatorKeys = null;if (key.contains(separator)) {separatorKeys = key.split("\\.");} else {return properties.get(key);}Map<String, Map<String, Object>> finalValue = new HashMap<>();for (int i = 0; i < separatorKeys.length - 1; i++) {if (i == 0) {finalValue = (Map) properties.get(separatorKeys[i]);continue;}if (finalValue == null) {break;}finalValue = (Map) finalValue.get(separatorKeys[i]);}return finalValue == null ? null : finalValue.get(separatorKeys[separatorKeys.length - 1]);}
}

测试代码(只是简单打印):

@Testpublic void testYamlReader() {Object serverHost = YamlReader.instance.getValueByKey("a.b.c.d");System.out.println(serverHost);}

Java读取Yaml文件相关推荐

  1. java 读取txt,java读取大文件

    java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File; import java.io.RandomAccessFile; ...

  2. Java基础学习总结(15)——java读取properties文件总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都 ...

  3. java读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  4. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  5. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  6. 用java读取properties文件--转

    今天为了通过java读取properties文件,google了很长时间,终于找到了.现在特记录之和大家一起分享.      下面直接贴出代码:java类 public class Mytest pu ...

  7. [java进阶]1.Java读取txt文件和写入txt文件

    1. Java读取txt文件 import java.io.*; import java.util.ArrayList; import java.util.List;public class unit ...

  8. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  9. JNI开发笔记(八)--Java读取txt文件进行JNI测试

    Java读取txt文件进行JNI测试 引 前言 1. 新建assets文件夹 2. 载入测试文件 3. 建立文件读取方法 4. 在MainActivity中读取文件数据 引 JNI开发笔记(一)–An ...

最新文章

  1. abaqus切削为什么没有切屑_基于ABAQUS的高速切削切屑形成过程的有限元模拟
  2. 《Got Git》学习笔记(一)
  3. js DOM Element属性和方法整理
  4. 【收藏】一篇快速帮企业转型区块链的锦囊
  5. for in for of区别_(for…in) VS (for…of)
  6. css定位position
  7. MATLAB2016添加工具箱toolbox方法,有截图
  8. 毕业答辩PPT免费下载
  9. oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]
  10. hashmap允许null键和值吗_【29期】Java集合框架 10 连问,你有被问过吗?
  11. plecs matlab 联合仿真,基于Matlab和PLECS的电力电子仿真实验教学
  12. 数字电路与系统设计(一)
  13. 足球足球裁判昏招大全裁判昏招大全
  14. 服务器假死 http 状态码,关于golang:Golang之HTTP服务『假死』问题排查
  15. 学神乔明达和他堪称神迹的学习履历
  16. 软件工程之软件需求分析
  17. 人工智能就业前景如何?
  18. SIMT ( Single Instruction Multiple Threads)
  19. 好文回顾:中国游戏编年史 中国游戏的二十年(5)
  20. 传统企业触网,打造完美用户体验是关键

热门文章

  1. Linux安装Kibana详细教程
  2. 小白calculator
  3. DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作
  4. 【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)
  5. 李开复花上千万投的缝纫机器人,团队出自大疆
  6. 简单粗暴清理C盘办法
  7. 写给程序员看的面向对象摄影技巧
  8. obs多推流地址_OBS如何进行多路推流
  9. Steam账号注册--流程
  10. 五款免费开源的语音识别工具