做網(wǎng)站復(fù)制國家機(jī)關(guān)印章如何在百度上做免費(fèi)推廣
重學(xué)SpringBoot3-yaml文件配置
- 引言
- YAML 基本語法
- YAML 數(shù)據(jù)類型
- YAML 對象
- YAML 數(shù)組
- 復(fù)合結(jié)構(gòu)
- 標(biāo)量
- 引用
- YAML 文件結(jié)構(gòu)
- Spring Boot 中的 YAML 配置
- 注意事項
- 總結(jié)
- 參考
引言
YAML(YAML Ain’t Markup Language)是一種常用于配置文件的數(shù)據(jù)序列化格式,因其易于閱讀和書寫而廣受歡迎。在 Spring Boot 應(yīng)用中,YAML 文件通常用于替代傳統(tǒng)的 properties 文件,用于配置應(yīng)用的各種參數(shù)。本教程將引導(dǎo)你了解 YAML 文件的基本寫法和在 Spring Boot 中的應(yīng)用。
YAML 的配置文件后綴為 .yml
或 .yaml
,如:app.yml
。
YAML 基本語法
YAML 的設(shè)計目標(biāo)是易于閱讀和書寫,其主要元素包括:
- 縮進(jìn):YAML 使用縮進(jìn)表示層級關(guān)系,通常使用兩個空格作為縮進(jìn)級別,不推薦使用 Tab 鍵。
- 鍵值對:使用冒號加空格分隔鍵和值。
- 列表:使用短橫線
-
表示列表項。 - 注釋:使用井號
#
開頭標(biāo)記注釋。 - 大小寫敏感:建議使用串式命名法(短橫線-)代替駝峰,即使用
device-type
代替deviceType
。
YAML 數(shù)據(jù)類型
YAML 支持以下幾種數(shù)據(jù)類型:
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary);
- 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list);
- 標(biāo)量(scalars):單個的、不可再分的值;
YAML 對象
- 對象鍵值對使用冒號結(jié)構(gòu)表示 key: value,(注意:冒號后面要加一個空格)。
- 也可以使用 key:{key1: value1, key2: value2, …}。
- 還可以使用縮進(jìn)表示層級關(guān)系。
示例:
key: child-key: valuechild-key2: value2
較為復(fù)雜的對象格式,可以使用問號加一個空格代表一個復(fù)雜的 key,配合一個冒號加一個空格代表一個 value:
? - k1- k2- k3
:- v1- v2- v3
YAML 數(shù)組
以"-"開頭的行表示構(gòu)成一個數(shù)組(注意:-后面有一個空格):
- A
- B
- C
YAML數(shù)組也可以使用行內(nèi)表示:
key: [value1, value2, ...]
數(shù)據(jù)子成員是一個數(shù)組(注意縮減一個空格):
-- A- B- C
數(shù)據(jù)子成員是一個對象數(shù)組:
list:-id: 1name: n1-id: 2name: n2
意思是 list 屬性是一個對象數(shù)組,每一個數(shù)組元素又是由 id、name 兩個屬性構(gòu)成。
數(shù)組也可以使用流式(flow )的方式表示:
復(fù)合結(jié)構(gòu)
數(shù)組和對象可以構(gòu)成復(fù)合結(jié)構(gòu),例:
YAML Resources:YAML Specifications:- YAML 1.2:- Revision 1.2.2 # Oct 1, 2021 *New*- Revision 1.2.1 # Oct 1, 2009- Revision 1.2.0 # Jul 21, 2009- YAML 1.1- YAML 1.0YAML Matrix Chat: '#chat:yaml.io' # Our New Group Chat Room!YAML IRC Channel: libera.chat#yaml # The old chat
標(biāo)量
純量是最基本的,不可再分的值,包括:
- 字符串
- 布爾值
- 整數(shù)
- 浮點(diǎn)數(shù)
- Null
- 時間
- 日期
使用一個例子來快速了解標(biāo)里可以使用哪些表示形式:
boolean: - TRUE #true,True都可以- FALSE #false,False都可以
float:- 3.14- 6.8523015e+5 #可以使用科學(xué)計數(shù)法
int:- 123- 0b1010_0111_0100_1010_1110 #二進(jìn)制表示
null:nodeName: 'node'parent: ~ #使用~表示null
string:- 哈哈- 'Hello world' #可以使用雙引號或者單引號包裹特殊字符- newlinenewline2 #字符串可以拆成多行,每一行會被轉(zhuǎn)化成一個空格
date:- 2018-02-17 #日期必須使用ISO 8601格式,即yyyy-MM-dd
datetime: - 2018-02-17T15:02:31+08:00 #時間使用ISO 8601格式,時間和日期之間使用T連接,最后使用+代表時區(qū)
引用
“&”錨點(diǎn)和“*****”別名,可以用來引用(相當(dāng)于定義變量和使用變量):
- &V1 java
- C
- C++
- *V1
再看一個復(fù)雜的例子:
defaults: &defaultsadapter: postgreshost: localhostdevelopment:database: myapp_development<<: *defaultstest:database: myapp_test<<: *defaults
& 用來建立錨點(diǎn)(defaults),<< 表示合并到當(dāng)前數(shù)據(jù),* 用來引用錨點(diǎn)。
YAML 文件結(jié)構(gòu)
以下是一個簡單的 YAML 配置文件示例:
server:port: 8080context-path: /apispring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: userpassword: passjpa:hibernate:ddl-auto: updateshow-sql: truemyapp:feature:enabled: truesecurity:level: high
在這個例子中:
-
server
,spring
,myapp
是頂級配置項。 -
使用縮進(jìn)表示層級結(jié)構(gòu),例如
datasource
是spring
下的子項。 -
列表可以表示為:
myapp:roles:- admin- user- guest
Spring Boot 中的 YAML 配置
在 Spring Boot 應(yīng)用中,YAML 文件通常命名為 application.yml
,放置在 src/main/resources
目錄下。Spring Boot 會自動加載這個文件并將其屬性綁定到 Spring 環(huán)境中。
示例:配置數(shù)據(jù)庫連接
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: dbuserpassword: dbpassdriver-class-name: com.mysql.cj.jdbc.Driver
示例:配置多環(huán)境
你可以為不同的環(huán)境定義不同的配置文件,如 application-dev.yml
, application-test.yml
, application-prod.yml
,并在主配置文件中指定活躍的配置文件:
spring:profiles:active: dev
注意事項
-
確保正確使用縮進(jìn),因為錯誤的縮進(jìn)會導(dǎo)致配置無法正確解析。
-
避免在 YAML 文件中使用 Tab 鍵,這可能導(dǎo)致解析錯誤。
-
注意字符串中特殊字符的處理,必要時可以使用雙引號或單引號。
- 單引號不會轉(zhuǎn)義【\n 則為普通字符串顯示】
- 雙引號會轉(zhuǎn)義【\n會顯示為換行符】
-
大文本
-
|
開頭,大文本寫在下層,保留文本格式,換行符正確顯示>
開頭,大文本寫在下層,折疊換行符
-
多文檔合并
-
- 使用
---
可以把多個yaml文檔合并在一個文檔中,每個文檔區(qū)依然認(rèn)為內(nèi)容獨(dú)立
- 使用
總結(jié)
YAML 提供了一種更為人性化的配置文件格式,它通過簡潔的結(jié)構(gòu)化格式,使得配置信息更加易于理解和維護(hù)。在 Spring Boot 中,通過使用 YAML,開發(fā)者可以輕松地管理和切換不同環(huán)境下的配置,優(yōu)化開發(fā)流程。掌握 YAML 的基本寫法和在 Spring Boot 中的應(yīng)用,將有助于提高你的開發(fā)效率。
參考
YAML 入門教程 | 菜鳥教程
YAML 備忘清單