文章目录
1. 概述
1.1 场景
在创建
Sprint Boot
项目时,会自动创建application.properties
配置文件,.yml
的诞生替代了它,并且配置起来更加简单。
1.2 优先级
- 优先级从低到高(属性相同时,优先级高的
覆盖
优先级低的).yml
.yaml
.properties
- 可通过下列方法进行验证
2. 语法
2.1 普通数据
语法(推荐):
key: value
- 注意: value 之前有一个
空格
示例代码:
name: zhangsan
2.2 对象数据(Map)
语法(推荐):
key:
key1: value1
key2: value2
...
- 或者
key: {key1: value2, key2: value2 ...}
- 注意:
key
前面的空格
个数不限定,在yml
语法中,相同缩进代表同一个级别
示例代码:
student:
name: zhangsan
sex: nv
age: 18
2.3 数组数据(List,Set)
语法(推荐):
key:
- value1
- value2
- 或者
key: [value1, value2, ...]
- 注意:
value
与-
之间存在一个空格。
示例代码:
city:
- shenzhen
- hangzhou
- wuhan
# 或者
city: [shenzhen, hagnzhou, wuhan]
# 集合中的元素是对象形式
person:
- name: 小游子
sex: 女
age: 25
- name: 小优子
sex: 男
age: 25
3. 实例
首先创建一个
SpringBoot
项目
3.1 数据准备 application.yml
- 手动创建一个
application.yml
配置文件,用于验证的数据准备。
server:
port: 8080
# 普通数据, 注意 空格。
name: zhangsan
# 对象数据, 注意 空格。
student:
name: zhangsan
sex: nv
age: 18
# 数组数据
person:
- name: 小游子
sex: 女
age: 25
- name: 小优子
sex: 男
age: 25
3.2 数据验证 TestController.java
- 创建一个
Controller
类,来对已配置的application.yml
中的数据进行验证
package com.example.springbootdemo02.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 对 application.yml 中的配置的数据文件进行验证
*/
@Controller
public class Test01Controller {
@Value("${name}")
private String name;
@Value("${student.name}")
private String stuName;
@Value("${student.sex}")
private String stuSex;
@Value("${student.age}")
private int stuAge;
@Value("${person[0].name}")
private String perName;
@Value("${person[0].sex}")
private String perSex;
@Value("${person[0].age}")
private int perAge;
@RequestMapping("test1")
@ResponseBody
private String test1() {
System.out.println(name);
return "普通数据";
}
@RequestMapping("test2")
@ResponseBody
private String test2() {
System.out.println("姓名: " + stuName + "\t" +
"性别: " + stuSex + "\t" +
"年龄: " + stuAge);
return "对象数据";
}
@RequestMapping("test3")
@ResponseBody
private String test3() {
System.out.println("姓名: " + perName + "\t" +
"性别: " + perSex + "\t" +
"年龄: " + perAge);
return "集合数据";
}
}
3.3 数据访问 浏览器
http://localhost:8080/test1
http://localhost:8080/test2
http://localhost:8080/test3