【SpringBoot學習之路】05.Springboot配置檔案詳解(一)
阿新 • • 發佈:2018-11-24
轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾【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可能會亂碼
解決方案