轉載聲明:商業轉載請聯系作者獲得授權,非商業轉載請注明出處.原文來自 © 呆萌鐘【SpringBoot學習之路】05.Springboot配置檔案詳解(一)
配置檔案
- Spring Boot使用一個全局的配置檔案
- application.properties
- application.yml
- 配置檔案放在src/main/resources目錄或者類路徑/config下
- 全局配置檔案的可以對一些預設配置值進行修改
YAML配置檔案
- 以前的配置檔案;大多都使用的是 xxxx.xml檔案
- yml是YAML(YAML Ain't Markup Language)語言的檔案,以資料為中心,比json、xml等更适合做配置檔案
配置例子
YAML
server:
port: 8081
XML
<server>
<port>8081</port>
</server>
YAML基本文法
- 使用縮進表示層級關系
- 縮進時不允許使用Tab鍵,隻允許使用空格。
- 縮進的空格數目不重要,隻要相同層級的元素左側對齊即可
- 大小寫敏感
YAML支援的三種資料結構
- 對象:鍵值對的集合
- 數組:一組按次序排列的值
- 字面量:單個的、不可再分的值
對象(Map)
- 對象的一組鍵值對,使用冒号分隔。如:username: admin
- 冒号後面跟空格來分開鍵值;
- {k: v}是行内寫法
k: v的方式
person:
name: damienzhong
age: 18
行内寫法
perosn: {name: damienzhong,age: 18}
數組
- 一組連詞線(-)開頭的行,構成一個數組,[]為行内寫法
- 數組,對象可以組合使用
animals:
- cat
- dog
- pig
行内寫法
animals: [cat,dog,pig]
字面量
- 數字、字元串、布爾、日期
- 字元串
- 預設不使用引号
- 可以使用單引号或者雙引号,單引号會轉義特殊字元
- 字元串可以寫成多行,從第二行開始,必須有一個單空格縮進。換行符會被轉為空格。
配置檔案值注入
配置檔案
person:
lastName: 呆萌鐘
age: 20
boss: true
birth: 2018/10/30
maps: {k1: v1,k2: v2}
lists:
- zhangsan
- lisi
dog:
name: 哈士奇
age: 6
javaBean
/**
* 将配置檔案中配置的每一個屬性的值,映射到這個元件中
* @ConfigurationProperties:告訴SpringBoot将本類中的所有屬性和配置檔案中相關的配置進行綁定;
* prefix = "person":配置檔案中哪個下面的所有屬性進行一一映射
*
* 隻有這個元件是容器中的元件,才能容器提供的@ConfigurationProperties功能;
* @ConfigurationProperties(prefix = "person")預設從全局配置檔案中擷取值;
*
*/
@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>
peroperties配置檔案
person.last-name=呆萌鐘
person.age=20
person.boss=true
person.birth=2018/10/30
person.maps.k1=v1
person.maps.k2=v2
person.lists=zhangsan,lisi
person.dog.name=哈士奇
person.dog.age=2
properties配置檔案在idea中預設utf-8可能會亂碼
解決方案