一、介绍yml
1、Spring Boot使用一个全局的配置文件(配置文件的名字是固定的)
(1)application.properties
(2)application.yml
2、配置文件放在src/main/resources目录或者类路径/config下
3、yml是YAML(YAML Ain't Markup Lanaguage)语言文件,以数据为中心,比josn,xml更适合做配置文件 。http://http:www.yaml.org参考语法规范。
二、YAML语法:
1、基本语法:
k:(空格)v : 表示一对键值对(空格必须有)
以空格的缩进来控制层级关系,只要是右对齐的一列数据,都是一个层级的
属性和值也是大小写敏感的。
server:
port: 8081
path:/hello
2、值的写法
(1)普通的值(数字、字符串、布尔值)
k: v : 字面直接来写。
字符串默认不用加单引号或双引号;
如果使用双引号:字符串中有特殊字符的话,不能识别特殊字符,不会进行转义。
例如:
name: "zhangsan \n lisi" 输出: zhangsan 换行 lisi
如果使用单引号,特殊字符会转成普通字符输出。
输出:zhangsan \n lisi
(2)Map
k: v :在下一行来写属性和值的关系,注意缩进
对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 20}
数组(List、Set):
用 - 值表示数组中的一个元素:
pets:
- cat
- dog
- pig
行内写法:
pets: [cat,dog,pig]
示例:
bean文件
package com.song.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**j将配置文件中每一个属性值映射到这个数组中,
*ConfigurationProperties告诉Spring boot将本类中所有属性和配置文件中相关的配置绑定
* prefix = "person":配置文件中那个下的所有属性进行一一映射
*只有这个组件是容器中的组件,才能使用容器提供的功能
* Created by Administrator on 2018/6/12 0012.
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boos;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boos=" + boos +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Boolean getBoos() {
return boos;
}
public void setBoos(Boolean boos) {
this.boos = boos;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public List<Object> getLists() {
return lists;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
yaml文件
person:
lastName: zhangsan
age: 18
boss: true
birth: 2017/12/12
maps: {name: 小花,age: 2}
lists:
- lisi
- zhaoliu
dog:
name: 小花
age: 2
pom.xml的依赖配置
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
最后测试打印结果为:
Person{lastName='zhangsan', age=18, boos=null, birth=Tue Dec 12 00:00:00 GMT+08:00 2017, maps={name=小花, age=2}, lists=[lisi, zhaoliu], dog=Dog{name='小花', age=2}}
对应的properties文件配置
person.lastName=zhangsan
person.age=28
person.maps.k1=xiahua
person.maps.k2=lisi
person.dog.name=xiaohua
person.dog.age=2
person.lists=a,b,c