springboot的多環境配置和yml的介紹
yml的介紹
springboot的配置文件可以分爲兩種形式、一種是.properties
文件、一種是.yml
或.yaml
的後綴文件形式
.yml
: 是yaml的一種簡寫、他們兩個都可以使用。
以properties 爲後綴的文件
這種配置文件、是k=v;形式的配置文件、這種配置文件應該都用過
以yml爲後綴的文件
一、YML是什麼
YAML (YAML Ain’t a Markup Language)YAML不是一種標記語言,通常以.yml爲後綴的文件,是一種直觀的能夠被電腦識別的數據序列化格式,並且容易被人類閱讀,容易和腳本語言交互的,可以被支持YAML庫的不同的編程語言程序導入,一種專門用來寫配置文件的語言。可用於如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。
二、YML的優點
- YAML易於人們閱讀。
- YAML數據在編程語言之間是可移植的。
- YAML匹配敏捷語言的本機數據結構。
- YAML具有一致的模型來支持通用工具。
- YAML支持單程處理。
- YAML具有表現力和可擴展性。
- YAML易於實現和使用。
三、YML語法
1、約定
- k: v 表示鍵值對關係,冒號後面必須有一個空格
- 使用空格的縮進表示層級關係,空格數目不重要,只要是左對齊的一列數據,都是同一個層級的
- 大小寫敏感
- 縮進時不允許使用Tab鍵,只允許使用空格。
- 鬆散表示,java中對於駝峯命名法,可用原名或使用-代替駝峯,如java中的lastName屬性,在yml中使用lastName或 last-name都可正確映射。
四、yml可以配置的數據格式
他可以配置的數據格式有 普通的值(數字、字符串、布爾)、日期、對象、數組、集合等。
1)普通的值
字符串默認不用加上單引號或者雙引號。
name: 張三
age: 18
flag: true
2)日期
date: 2020/5/10
3)對象(屬性和值) Map(鍵值對)
person:
name: 張三
age: 18
也可以寫成一行
person: {name: 張三, age: 18}
4) 數組、list、set
用-表示數組中的一個元素
arrays:
- dog
- pig
- cat
也可以寫成一行
arrays: [dog,pig,cat]
總結:推薦使用以.yml
爲配置文件、這種配置文件的方式簡潔、乾淨、畢竟別人的官網也推薦我們使用。
springboot的多環境配置
在springboot中可以有多個.yml
配置或.properties
的文件、這些文件可能是測試環境,預生產環境,生產環境可以使用不同的配置 、我們也可以選擇激活哪一個配置文件。
一、在多個properties的配置文件、我們如何選擇一個配置文件來使用呢?
假設有3的配置文件、springboot先會讀取application.properties
的配置文件、此時發現有spring.profiles.active=test
這句話、他就會去尋找配置文件名-
後面的的名字是否有文件名匹配上的、如果有將會加載application-xxxx.properties
、如果沒有找到匹配的配置文件、將會加載自身的配置文件pplication.properties
1) application.properties
spring.profiles.active=test
2)application-dev.properties
server.port=8081
3)application-test.properties
server.port=8082
總結: 這種配置多環境比較麻煩、要創建多個properties文件、各有各的好處
二、在一個yml配置文件中配置多環境
---
: 可以叫做文檔分割符、有多個不一樣的配置用---
來分割
如果在:
spring:
profiles:
active: test #指定激活對應的文檔快
中找不到test
文檔塊的話、他會找到自身的配置
1) application.yml
server:
port: 8081
spring:
profiles:
active: test #指定激活對應的文檔快
---
server:
port: 8082
spring:
profiles: dev #簡單來說這個就好比給這個文檔塊取了一個名字
---
server:
port: 8083
spring:
profiles: test
總結:在yml中配置配置多環境的好處就是不寫多個文件、看起來一目瞭然、比properties文件方便、各有各的好處