配置文件
Spring Boot使用一个全局的配置文件:
- application.properties
- application.yml
配置文件名固定,作用是修改Spring Boot自动配置的默认值。
配置文件放在src/main/resources目录或者类路径/config下
YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是一个标记语言
YAML isn’t Markup Language:不是一个标记语言
标记语言:
以前的配置文件,大多都使用的是XXX.xml文件
.yml是YAML语言的文件,以数据为中心,比json、xml等更适合做配置文件。相关语法可参考http://www.yaml.org/
YAML配置示例:
XML配置示例:
<server> <port>8081</port> </server>
|
YAML语法
YAML基本语法
YAML支持的三种数据结构
对象:键值对的集合(属性和值)
对象还是k: v的方式,举例如下:
friends: lastName: Zhang age: 20
|
行内写法:
friends: {lastName: Zhang,age: 20}
|
数组:一组按次序排列的值(List、Set)
用(- 值)表示数组中的一个元素
行内写法:
字面量:单个的、不可再分的值(数字、字符串、布尔)
k: v 字面直接来写,字符串默认不用加上单引号或者双引号
[注]此处单引号和双引号使用有区别:
双引号(“”):不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思。举例如下:
name: “zhangsan \n lisi” => 输出:zhangsan 换行 lisi
单引号(‘’):会转义特殊字符,特殊字符最终只是一个普通的字符串数据。举例如下:
name: ‘zhangsan \n lisi’ => 输出:zhangsan \n lisi
配置文件值注入
配置文件
在application.yml中进行相关配置
person: lastName: zhangsan age: 18 boss: false birth: 2017/10/12 maps: {k1: v1,k2: v2} lists: - lisi - zhaoliu dog: name: puppy age: 12
|
JavaBean
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;
import java.util.Date; import java.util.List; import java.util.Map;
@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;
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 getBoss() { return boss; }
public void setBoss(Boolean boss) { this.boss = boss; }
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; }
@Override public String toString() { return "Person{" + "lastName='" + lastName + '\'' + ", age=" + age + ", boss=" + boss + ", birth=" + birth + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } }
|
配置文件处理器
在pom.xml中导入配置文件处理器,以后编写配置时就会有提示了
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
|
补充
在application.properties中的写法
#Idea中的properties配置文件utf-8 #配置person person.last-name=张三 person.age=18 person.birth=2017/12/15 person.boss=false person.maps.k1=v1 person.maps.k2=14 person.lists=a,b,c person.dog.name=dog person.dog.age=1
|
【注】解决.properties文件编码问题:File — Settings — File Encodings — Default encoding for properties files — 设置成UTF-8
