一、配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的:
application.properties
application.yml
配置文件的作用:修改SpringBoot自动配置的默认值,SpringBoot在底层都给我们自动配置好;
YAML配置例子:
server:
port:8081
xml配置:
<server>
<port> 8081</port>
</server>
2、YMAL语法
2.1、基本语法
k:(空格)v 表示一对键值对(空格必须有)
以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的
server: port: 8081
属性和值都是大小写敏感;
2.2、值的写法
2.2.1、字面量:普通值(数字,字符串,布尔)
k:v ->字面直接来写;
备注:字符串默认不用加上单引号和双引号
""->双引号,会转义字符串里面的特殊字符,特殊字符会作为本身想表达的意思
''->单引号,不会转义特殊字符,特殊字符最终只是一个普通的字符串数据
例子:
test1: "aa \n ba" test2: 'aa \n ba'
结果:
test1:aa
ba
test2:aa \n ba/
2.2.2、对象,Map
K: V ->对象还是K:V的方法
例子:
friends: lastName: zhangsan age: 20
行内写法:(注意:后面加空格)
friends: {lastName: zhangsan,age: 20}
2.2.3、数组(List,Set)
用-值表示数组中的一个元素
例子:注意空格
pets: - cat - dog - pig
行内写法:
pets: {cat,dog,pig}
2.3、配置文件值注入
2.3.1、例子:
YML配置:
person:
lastName: zhangsan //last-name也可以
age: 18
boos: false
birth: 2020/6/18
maps: {k1: v1,k2: v2}
lists:
- list
- zhaoliu
dog:
name: xiaogou
age: 2
properties配置:
person.lastName=zhangsan1
person.age=18
person.boos=true
person.birth=2020/6/18
person.maps.k1=k1
person.maps.k2=k2
person.lists={list,zhaoliu}
person.dog.name=xiaogou
person.dog.age=2
乱码解决:
java:
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String LastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
我们导入配置文件处理器,以后编写配置就有提示了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.3.2、@Value和@ConfigurationProperties获取值比较