- SpringBoot-Yaml语法
- 四、Yaml语法
- 1、配置文件
- 2、Yaml概述
- 3、Yaml基础语法
- 4、注入配置文件
- yaml注入配置文件
- 加载指定的配置文件
- 配置占位符
- 结论:
SpringBoot使用一个全局的配置文件,配置文件名称是固定的
- application.properties
- 语法结构:key=value
- applicatio.yml
- 语法结构:key:空格 value
**配置文件的作用:**修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们配置好了;
例如:配置端口号
server.port=80802、Yaml概述
YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)
这种语言以数据为中心,而不是以标记语言为中心!!
比较传统xml配置和yaml配置的区别:端口配置
8080
#yaml配置 server: port: 80803、Yaml基础语法
语法要求严格:
- 控制不能省略
- 以缩进来控制层级关系,只要左对齐的一列就视为同一级
- 属性和值的大小写都是十分敏感
#键值对
name: lengzher
#对象
person:
name: lengzher
age: 1
happy: false
birthday: 2020/2/1
map: {heigh: 98,long: 18}
list: [sing,read,run]
pet:
name: 旺财
age: 2
#行内写法
student1: {name: lengzher,sex: 1}
#数组
pets1:
-cat
-dog
-pig
#行内写法
pets: [cat,dog,pig]
4、注入配置文件
Yaml更强大的地方在于可以给实体类直接注入匹配值!!
yaml注入配置文件- 编写实体类
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birthday;
private Map map;
private List
2.配置application.yml
person:
name: lengzher
age: 1
happy: false
birthday: 2020/2/1
map: {heigh: 98,long: 18}
list: [sing,read,run]
pet:
name: 旺财
age: 2
3.将person对象注入到实体类中
@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birthday;
private Map map;
private List
4.导入配置文件处理器依赖
org.springframework.boot spring-boot-configuration-processor true
5.测试
@SpringBootTest
class HelloApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
打印出实体类person的值,测试成功!
加载指定的配置文件**@PropertySource :**加载指定的配置文件;
@configurationProperties:默认从全局配置文件中获取值;
1.我们去在resources目录下新建一个person.properties文件
name=lengzher
2.然后在我们的代码中指定加载person.properties文件
@PropertySource(value = "classpath:person.properties")
@Component //注册bean
public class Person {
@Value("${name}")
private String name;
......
}
3.测试
配置占位符person:
name: user${random.uuid} # 随机uuid
age: ${random.int} # 随机int
happy: false
birth: 2000/01/01
maps: {k1: v1,k2: v2}
lists:
- code
- girl
- music
dog:
#如果person.name存在就走,不存在走other
name: ${person.name:other}_旺财
age: 1
结论:
- 配置yml和配置properties都可以获取到值 , 强烈推荐 yml;
- 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;
- 如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!



