2.2 YAML语法
1. 基本语法
k:(空格)v:表示一对键值对(空格必须有)
以空格的缩进进行控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也都是大小写敏感的;
2. 值的写法
字面量:普通的值(数字,字符串,布尔)
k: v :字面直接来写:
字符串默认不用加上单引号或双引号;
“”:双引号:不会转义字符串里的特殊字符,特殊字符会作为本身想表示的意思输出
name: "zhangsan \n lisi" ;输出:zhangsan 换行 lisi
‘’:单引号:会转义特殊字符,特殊字符最终只是一个普通字符串数据
name: "zhangsan \n lisi" ;输出:zhangsan \n lisi
对象,Map(属性和值)(键值对)
k: v :在下一行来写对象的属性和值的关系;注意缩进
friends:
lastName: zhangsan
age: 20
或行内写法:
friends: {lastName: zhangsan,age: 20}
数组(List,Set)
用- 值的方式表示数组中的一个元素
pets:
- dog
- cat
- pig
或行内写法:
pets: [dog,cat,pig]
2.3 yaml配置文件值的获取
配置文件:
person:
age: 18
last-name: zhangsan
boss: false
birth: 2019/10/02
maps:
ki: v1
k2: v2
list:
- lisi
- wangwu
dog:
name: 小狗
age: 2
JavaBean
package com.atguigu.springboot.bean;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
*
* @ConfigurationProperties:告诉springBoot将本类中的所有属性和配置文件中相关的配置进行绑定; (prefix = " person "):配置文件中哪个下面的所有属性进行一一映射
*/
@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<Object> list;
private Dog dog;
}
导入配置文件处理器,以后写配置就有提示了
<!--Springboot配置文件处理器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
运行springBoot单元测试
package com.atguigu.springboot;
import com.atguigu.springboot.bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Springboot 单元测试
* 可以在测试期间很方便的类似编码自动注入
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01HelloworldQuickApplicationTests {
@Autowired
Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}