springboot项目中,配置文件中有一个application.yml,谈谈如何使用
YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言),也就是和XML功能类似,但是语法有所区别。
key: value
结构。注意,:
后面必须有一个空格@Component
@ConfigurationProperties(prefix = "p")
public class Person {
private String name;
private int age;
private boolean adults;
private Date birthday;
private Map<String, Object> locations;
private String[] hobbies;
private List<String> skills;
private Pet pet;
// setter getter
}
public class Pet {
private String nickname;
private float weight;
// setter getter
}
application.yml
p:
name: zhangsan
age: 11
adults: false
birthday: 2020/12/23
locations: {
ciry: 广州, zone: 天河}
hobbies: [1, 3, 4]
skills: [kill, drike]
pet: {
nickname: xiao狗, weight: 12.5}
注:@ConfigurationProperties(prefix = “p”),通过prefix = "p"
绑定配置信息
测试
@SpringBootTest
class StudyRestApplicationTests {
@Autowired
private Person p;
@Test
void contextLoads() {
System.out.println(p);
}
}
测试结果
Person [name=zhangsan, age=11, adults=false, birthday=Wed Dec 23 00:00:00 CST 2020, locations={
ciry=广州, zone=天河}, hobbies=[1, 3, 4], skills=[kill, drike], pet=Pet [nickname=xiao狗, weight=12.5]]
上述的数组,集合,Map,对象都是使用的行内表示,也就是写在一行。也可以多行,其中语法如下
数组/集合
以 - 开头的行表示构成一个数组:
- A
- B
- C
对象/Map
key:
child-key: value
child-key2: value2
修改application.yml文件
dog:
name: tantan
p:
name: zhangsan
age: 11
adults: false
birthday: 2020/12/23
locations:
ciry: 广州
zone: 天河
hobbies:
- 1
- 3
- 4
skills:
- kill
- drike
pet:
nickname: xiao狗
weight: 12.5
最基本的,不可再分的值,包括:
boolean:
- TRUE #true,True都可以
- FALSE #false,False都可以
float:
- 3.14
- 6.8523015e+5 #可以使用科学计数法
int:
- 123
- 0b1010_0111_0100_1010_1110 #二进制表示
null:
nodeName: 'node'
parent: ~ #使用~表示null
string:
- 哈哈
- 'Hello world' #可以使用双引号或者单引号包裹特殊字符
- newline
newline2 #字符串可以拆成多行,每一行会被转化成一个空格
date:
- 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime:
- 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
& 锚点和 * 别名,可以用来引用:
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
相当于:
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost
& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点。
下面是另一个例子:
- &showell Steve
- Clark
- Brian
- Oren
- *showell
转为 JavaScript 代码如下:
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]