一、Spring Boot配置文件介绍
Spring Boot中的配置文件主要是分为以下两种类型:
【1】application.properties全局配置文件
【2】application.yml全局配置文件
Spring Boot的配置文件一般放在 src / main / resources 路径下面,而且全局配置文件可以对一些默认属性进行修改。在学习Spring Boot之前我们一直使用的全局配置文件是以properties结尾的配置文件,所以在这里我们主要讲解application.yml配置文件。
二、yml文件介绍
yml文件是YAML语言的文件,YAML(Yet Another Markup Language)是一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言,并且它是以数据为中心,比JSON,XML等更适合做配置文件。
三、yml文件的应用场景
【1】脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用
【2】序列化: YAML是由宿主语言数据类型直转,的比较适合做序列化。
【3】配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
四、yml文件的语法
【1】yml的基本格式
key: value:表示一对键值对,并且 : 与value必须有一个空格。
yml是以空格的缩进来控制层级的关系,只要是左对齐的一列数据,都算是同一个层级的,并且大小写也是敏感的,如下所示:
server:
port: 8080
path: /helloworld
【2】yml的值的写法
①、普通的值(数值,字符串,布尔值)
key: value 直接写即可,例如:
name: ZhangSan
如果是字符串要加上引号的话,分以下两种情况:
1.双引号:不会对字符串里面的特殊符号进行转义,例如 “my name is \n ZhangSan” 输出结果为"my name is " 换行之后再输出 “ZhangSan”。
2.单引号:对字符串里面的转义字符进行转义,使之变为普通字符,例如 'my name is \n ZhangSan’输出结果为 ‘my name is ZhangSan’。
②、对象,Map(属性和值)
第一种格式,如下所示:
person:
name: ZhangSan
age: 20
sex: 男
第二种格式,如下所示:
person: {name: ZhangSan,age: 20,sex: 男}
③、数组(List,Set等)
第一种格式,如下所示:
pets
- dog
- pig
- duck
第二种格式,如下所示:
pets: [dpg,pig,duck]
注意:冒号后面一定要有空格,即key: value。
四、案例演示
【1】创建两个Bean,一个是Cat,另外一个是Person,如下所示:
①、Cat.java
package bean;
/**
* @author czd
*/
public class Cat {
private String name;
private Integer age;
//下面省略Setter和Getter方法以及toString方法
}
在pom.xml文件中导入以下依赖
org.springframework.boot
spring-boot-configuration-processor
true
②、Person.java
package com.czd.springbootdemo.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author czd
* 将配置文件的属性映射到这个类的组件中
* @ConfigurationProperties代表告诉SrpingBoot将本类中的属性与配置文件中的属性进行绑定
*/
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath:application.yml")
public class Person {
private String name;
private Integer age;
private Boolean man;
private Date birth;
private Map map;
private List
【2】在resources包下创建一个application.yml配置文件,输入如下内容:
person:
name: 张三
age: 20
man: true
birth: 12/3/12
map: { width: 25,height: 25}
list: [1,2,3,4,5]
cat:
name: coffee
age: 8
【3】在Spring Boot测试包(test包)中进行测试
package com.czd.springbootdemo;
import 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;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootdemoApplicationTests {
@Autowired
private Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
输出结果
Person{name='张三', age=20, man=true, birth=Mon Dec 03 00:00:00 CST 2012, map={width=25, height=25}, list=[1, 2, 3, 4, 5], cat=Cat{name='coffee', age=8}}
五、解决配置文件编码问题
【1】打开IDEA的Settings界面,在输入框中输入: File Encoding,如下图:
【2】在下面找到 Default encoding for properties files,选择 UTF-8,并且在后面打上勾就可以了,如下图所示: