java如何读取yaml配置文件
作者:qzqanlhy1314
这篇文章主要介绍了java如何读取yaml配置文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
java读取yaml配置文件
maven
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
application.yaml
server: host: localhost port: 8771
java code
import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class YamlReader {
private static Map<String, Map<String, Object>> properties;
private YamlReader() {
if (SingletonHolder.instance != null) {
throw new IllegalStateException();
}
}
/**
* use static inner class achieve singleton
*/
private static class SingletonHolder {
private static YamlReader instance = new YamlReader();
}
public static YamlReader getInstance() {
return SingletonHolder.instance;
}
//init property when class is loaded
static {
InputStream in = null;
try {
properties = new HashMap<>();
Yaml yaml = new Yaml();
in = YamlReader.class.getClassLoader().getResourceAsStream("application.yaml");
properties = yaml.loadAs(in, HashMap.class);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* get yaml property
*
* @param key
* @return
*/
public Object getValueByKey(String root, String key) {
Map<String, Object> rootProperty = properties.get(root);
return rootProperty.getOrDefault(key, "");
}
}
Junit Test code
public class YamlReaderTest {
@Test
public void testYamlReader() {
Assert.assertEquals(YamlReader.getInstance().getValueByKey("server", "host"), "localhost");
Assert.assertEquals(YamlReader.getInstance().getValueByKey("server", "port"), 8771);
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
