前言
ymal,properties
一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。在程序中就可以直接读取了,例如:
一、properties 文件
InputStream input =Thread.currentThread().getContextClassLoader().getResourceAsStream("abc.properties");
Properties prop = new Properties();
prop.load(input);
二、yaml 文件
1.基本读取
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(yamlPath);
Yaml yaml = new Yaml();
HashMap map = yaml.loadAs(inputStream, HashMap.class);
2.进阶读取 (各种类型的读取方法)
第一种读取方式 @value
yml示例文件:
# 基本类型
title-one: 'play \n game' # 单引号不会进行解析,直接输出\n
title-two: "play \n game" # 双引号进行转义,会换行
tdata: 2022/05/26
# 集合类型
maps: "{key1: 'value1', key2: 'value2'}"
listsplit: aaa,bb,cc
@Value("${title-one}")
private String titleOne;
@Value("${title-two}")
private String titleTwo;
@Value("${tdata}")
private Date tdata;
@Value("#{${maps}}")
private Map<String, String> maps;
@Value("#{'${listsplit}'.split(',')}")
private List<String> listSplit;
@Value("#{'${listsplit}'.split(',')}")
private String[] listSplitArg;
@Value("#{'${listsplit}'.split(',')}")
private Set<String> listSplitSet;
第二种读取方式
yml示例文件:
prop:
# arrval:
# - a
# - b
# - c
arrval: [a,b,c]
setval:
- d
- e
- f
# setval: [d,e,f]
listval:
- x
- m
- z
# listval: [x,m,z]
tmap:
amap: "maps1"
bmap: "maps2"
cmap: "maps3"
# tmap: {amap: "maps1", bmap: "maps2", cmap: "maps3"}
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ConfigurationProperties(prefix = "prop")
public class test {
private String[] arrVal;
private Set<String> setVal;
private List<String> listVal;
private Map<String, String> tmap;
}