本篇主要介绍Spring Boot 读取配置文件中的几种特殊的属性,如:布尔类型、整数、小数、数组,List和Set、Map和实体类格式的属性读取。
1
配置属性读取
之前的文章已经介绍了Spring Boot 读取配置文件的有三种方法这里就不再详细描述了,直接上方法 下面是在配置文件中配置的信息:
data:
str:字符串可以不加引号
escapeStr:"双引号直接输出\n特殊字符"
notEscapeStr:'单引号可以转义\n特殊字符'
flag:false
num:1234
Dnum:66.66
list:
- listdata1
- listdata2
- listdata2
listMap:#List>
-name:listmap1
value:value1
-name:listmap2
value:value2
set:
- setdata1
- setdata2
- setdata2
arr:[1,2,2,3]
map:{key1:v1,key2:v2}
attentions:
-name:tom
sex:F
-name:kyle
sex:M
配置一个读取properties的bean,这里命名为DataProperties.java 详细代码如下:
@Component
@ConfigurationProperties(prefix="data")
public classDataProperties {
//字面值,字符串,布尔,数值
/**
*普通字符串
*/
privateStringstr;
/**
*转义特殊字符串
*/
privateStringescapeStr;
/**
*输出特殊字符串
*/
privateStringnotEscapeStr;
/**
*布尔类型
*/
privateBooleanflag;
/**
*整数
*/
privateIntegernum;
/**
*小数
*/
privateDoubledNum;
/**
*数组,List和Set,两种写法: 第一种:-空格value,每个值占一行,需缩进对齐;第二种:[1,2,...n]行内写法
*/
privateListlist;// list可重复集合
privateSetset;// set不可重复集合
/**
*数组
*/
privateString[]arr;
privateList>listMap;
/**
* Map和实体类,两种写法:第一种:key空格value,每个值占一行,需缩进对齐;第二种:行内写法
*/
privateMapmap;// Map K-V
privateListattentions;//复合结构,集合对象
//省略setter getter
在controller控制中添加调用的方法,代码如下 :
@Autowired
privateDataPropertiesdataProperties;
@RequestMapping("/data")
publicStringdata() {
returndataProperties.toString();
}
页面打印的内容如下:
DataProperties, ], map=, attentions=[Attention, Attention]}
2
随机值配置
配置文件中$可以用来生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如 生成int 值、long 值或者 string 字符串。
etu:
key:${random.value}
number:${random.int}
bigNumber:${random.long}
uuid:${random.uuid}
intNumber:${random.int[10]}
range:${random.int[1,100]}
使用方法
@RequestMapping("/etu")
publicStringetu() {
return"random:"+etuProperties.getKey()+"-number:"+etuProperties.getNumber()+"-long:"+etuProperties.getBigNumber()
+"-uuid:"+etuProperties.getUuid()+"-int:"+etuProperties.getIntNumber()+"-range:"+etuProperties.getRange();
}
打印出来的信息为:
random:592d6d174472ec7cfc302286b4d67cbd-int:-181604665-long:2109255637824194186-uuid:327f29d0-7fc9-42cb-9a81-4171784135c1-range:88
3
总结
1
Spring Boot 支持两种格式的配置文件,其中YAML的数据结构比properties更清晰。
2
YAML 是专门用来写配置文件的语言,非常简洁和强大。
3
YAML 对空格的要求很严格,且不能用Tab键代替。
4
YAML 通过空格缩进的程度确定层级,冒号后面有空格,短横线后面有空格。
5
ConfigurationProperties注解适合批量注入配置文件中的属性,Value注解适合获取配置文件中的某一项。
6
ConfigurationProperties注解支持数据校验和获取复杂的数据,Value注解支持SpEL表达式
完
领取专属 10元无门槛券
私享最新 技术干货