java yaml_Java 使用snakeyaml解析yaml
下载依赖
org.yaml
snakeyaml
1.23
在项目根目录下创建/etc/conifg.yml 配置文件, 输入一条测试数据
test.param: 3
代码测试
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Map;
import org.yaml.snakeyaml.Yaml;
public class yamlTest {
public static void main(String[] args) throws FileNotFoundException {
Map conf = new Yaml().load(new FileInputStream(new File("./etc/config.yml")));
System.out.println(conf.get("test.param")); // test_gp2
System.out.println(conf.getOrDefault("test.param2", "unknown")); // unknown
}
}
打包测试
在jar包同级目录下创建/etc/confog.yml文件
root@ubuntu:~/jars# tree etc/ sparktest_gp-1.0-SNAPSHOT.jar
etc/
└── config.yml
sparktest_gp-1.0-SNAPSHOT.jar
运行jar包
root@ubuntu:~/jars# java -cp sparktest_gp-1.0-SNAPSHOT.jar main.yamlTest
2
unknown
修改/etc/config.yml文件
test.param: 3
重新运行jar包, 参数改变, 可以在jar包外部修改配置
root@ubuntu:~/jars# java -cp sparktest_gp-1.0-SNAPSHOT.jar main.yamlTest
3
unknown
使用单例模式构建读取配置工具类
package main;
import com.ctc.wstx.api.ReaderConfig;
import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.FileInputStream;
import java.util.Map;
public class Config {
private Map conf;
private static Config instance;
private Config() {
try {
conf = new Yaml().load(new FileInputStream(new File("./etc/config.yml")));
} catch (Exception e) {
e.printStackTrace();
}
}
public static Config getInstance() {
if (instance == null) {
synchronized (ReaderConfig.class) {
if (instance == null) {
instance = new Config();
}
}
}
return instance;
}
public String getString(String param) {
return String.valueOf(conf.get(param));
}
public String getString(String param, String defaultValue) {
if (null == conf.get(param)) {
return defaultValue;
}
return String.valueOf(conf.get(param));
}
public Map getConfig() {
return conf;
}
}
调用测试
import java.util.Map;
public class UseConfig {
public static void main(String[] args) {
Map conf = Config.getInstance().getConfig();
System.out.println(conf);
String parma1 = Config.getInstance().getString("test.param");
System.out.println(parma1);
}
}
java yaml_Java 使用snakeyaml解析yaml相关推荐
- java snakeyaml_JAVA使用SnakeYAML解析与序列化YAML
1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...
- yml java集合_JAVA 使用 SnakeYAML 解析与序列化 YAML
1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...
- JAVA使用SnakeYAML解析与序列化YAML
1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...
- Java解析yaml文件
Java解析yaml文件 1. 什么是yaml ? 2. 导入maven依赖 3. yaml 案例文件 4. 示例代码 5. 解析结果 1. 什么是yaml ? 参考下方链接 yaml快速入门 2. ...
- java读取yaml配置文件,snakeyaml读取yaml配置文件
下面上我解析yaml文件的例子: // me.yaml age: 1 name: jiaobuchong params: event: what's up url: http://www.jiaobu ...
- Java安全之SnakeYaml反序列化分析
Java安全之SnakeYaml反序列化分析 0x00 前言 偶然间看到SnakeYaml的资料感觉挺有意思,发现SnakeYaml也存在反序列化利用的问题.借此来分析一波. 0x01 SnakeYa ...
- Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...
- 四种Java线程池用法解析
四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...
- 如何在Python中解析YAML文件
如何在Python中解析YAML文件? #1楼 不依赖C标头的最简单,最纯净的方法是PyYaml( 文档 ): #!/usr/bin/env pythonimport yamlwith open(&q ...
- 你所需要的java基础篇深入解析大汇总
java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序 ...
最新文章
- FWFT FIFO读操作注意
- Python 动态变量名定义与调用
- python之美_Python之美[从菜鸟到高手]--生成器之全景分析
- Leetcode--55. 跳跃游戏
- 划分字母区间c语言,LeetCode(#763):划分字母区间
- 简单Matlab的Gui设计——电子琴
- 如何搞好公司和员工的关系二:以德服人才能口服心服
- R语言排序及筛选函数
- 浅谈feature-based 和 fine-tune
- cf I - Irrational Division
- python中文转化gb2321_使用Python进行中文繁简转换的实现代码
- HTTPs SSL OV、DV和EV证书的区别
- 计算机控制面板 关机时间,怎么设置电脑的自动关机时间
- 深大数据库系统实验3——DATABASE SOFTWARE练习实验
- 计算机专业有那些?原来有这么这么多
- 汉字转拼音函数 linux,oracle 汉字转拼音
- 攻击篇--远程控制(一)生成被控端与主控端
- React(一)——快速入门
- 如何积累财富[转载] 我觉得挺经典 和大家一起分享一下!
- datagrip 查询结果不能修改
热门文章
- netperf mips 移植
- Flash Builder 4.7 正式版下载、破解
- 肖风:分布式网络是区块链机制设计的第一个层次
- 为什么Lottie动画无法使用AVVideoCompositionCoreAnimationTool导出
- 小工具-悬浮窗LogViewer在android手机上查看数据日志
- 【转】GB2312 编码
- AutoHotKey完成ass字幕文件字幕偏移时间修改
- 【f1c200s/f1c100s】不带中断引脚采用扫描的方式实现通用gpio-keys
- 三种Moran's I(空间自相关性) 之我见
- charles V4.2.1版本 破解码