得益於java社區的成熟,以下是幾位大佬的相關精華內容。
https://www.jianshu.com/p/97222440cd08 --yml的基本使用
http://nodeca.github.io/js-yaml/ --在線驗證yml文件,轉爲json
https://blog.csdn.net/yi_shen_zhi_nu/article/details/95490985 --批處理平臺項目的yml配置
yml是什麼
yml只是一種寫法,其最終會轉換成json文件。
其用在springboot中,用來簡化配置文件。
properties文件和對應YAML文件的對比:
environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App
my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com
#YAML格式
environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App
my:
servers:
- dev.bar.com
- foo.bar.com
yml使用冒號加縮進的方式代表層級(屬性)關係,使用短橫槓(-)代表數組元素。
yml的規範
1,YAML大小寫敏感;
2,使用縮進代表層級關係;
3,縮進只能使用空格,不能使用TAB,不要求空格個數,只需要相同層級左對齊(一般2個或4個空格)
4,使用冒號代表,格式爲key: value。冒號後面要加一個空格:
key: value
可以使用縮進表示層級關係;
key:
child-key: value
child-key2: value2
YAML中還支持流式(flow)語法表示對象,比如上面例子可以寫爲:
key: {child-key: value, child-key2: value2}
5,數組的寫法
使用一個短橫線加一個空格代表一個數組項:
hobby:
- Java
- LOL
當然也可以有這樣的寫法:
-
- Java
- LOL
可以簡單理解爲:[[Java,LOL]]
一個相對複雜的例子:
companies:
-
id: 1
name: company1
price: 200W
-
id: 2
name: company2
price: 500W
意思是companies屬性是一個數組,每一個數組元素又是由id,name,price三個屬性構成;
數組也可以使用流式(flow)的方式表示:
companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
6、常量的寫法
YAML中提供了多種常量結構,包括:整數,浮點數,字符串,NULL,日期,布爾,時間。下面使用一個例子來快速瞭解常量的基本使用:
boolean:
- TRUE #true,True都可以
- FALSE #false,False都可以
float:
- 3.14
- 6.8523015e+5 #可以使用科學計數法
int:
- 123
- 0b1010_0111_0100_1010_1110 #二進制表示
null:
nodeName: 'node'
parent: ~ #使用~表示null
string:
- 哈哈
- 'Hello world' #可以使用雙引號或者單引號包裹特殊字符
- newline
newline2 #字符串可以拆成多行,每一行會被轉化成一個空格
date:
- 2018-02-17 #日期必須使用ISO 8601格式,即yyyy-MM-dd
datetime:
- 2018-02-17T15:02:31+08:00 #時間使用ISO 8601格式,時間和日期之間使用T連接,最後使
多環境配置
使用---連接符來進行配置,如下文使用---將文件分爲3塊,第一塊寫公用的配置。
spring.profiles.active.xxx 寫在公用塊,指定將使用什麼環境
spring.profiles:xxx 指定屬於什麼環境
在服務器啓動jar服務時,可以使用此命令 java -jar xxxxx-1.0.0.jar --spring.profiles.active=pro
強制指定環境,此處的命令將覆蓋yml文件中的配置
spring:
profiles:
active: dev
##繼續寫公用的配置
---
#開發環境配置
spring:
profiles: dev
server:
port: 8081
---
#測試環境配置
spring:
profiles: pro
server:
port: 8082