SpringBoot3-yaml文件配置方式
引言
YAML(YAML Ain’t Markup Language)是一種常用于配置文件的數(shù)據(jù)序列化格式,因其易于閱讀和書寫而廣受歡迎。
在 Spring Boot 應用中,YAML 文件通常用于替代傳統(tǒng)的 properties 文件,用于配置應用的各種參數(shù)。
本教程將引導你了解 YAML 文件的基本寫法和在 Spring Boot 中的應用。
YAML 的配置文件后綴為 .yml
或 .yaml
,如:app.yml
。
YAML 基本語法
YAML 的設計目標是易于閱讀和書寫,其主要元素包括:
- 縮進:YAML 使用縮進表示層級關系,通常使用兩個空格作為縮進級別,不推薦使用 Tab 鍵。
- 鍵值對:使用冒號加空格分隔鍵和值。
- 列表:使用短橫線
-
表示列表項。 - 注釋:使用井號
#
開頭標記注釋。 - 大小寫敏感:建議使用串式命名法(短橫線-)代替駝峰,即使用
device-type
代替deviceType
。
YAML 數(shù)據(jù)類型
YAML 支持以下幾種數(shù)據(jù)類型:
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary);
- 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list);
- 標量(scalars):單個的、不可再分的值;
YAML 對象
- 對象鍵值對使用冒號結(jié)構表示 key: value,(注意:冒號后面要加一個空格)。
- 也可以使用 key:{key1: value1, key2: value2, …}。
- 還可以使用縮進表示層級關系。
示例:
key: child-key: value child-key2: value2
較為復雜的對象格式,可以使用問號加一個空格代表一個復雜的 key,配合一個冒號加一個空格代表一個 value:
? - k1 - k2 - k3 : - v1 - v2 - v3
YAML 數(shù)組
以"-"開頭的行表示構成一個數(shù)組(注意:-后面有一個空格):
- A - B - C
YAML數(shù)組也可以使用行內(nèi)表示:
key: [value1, value2, ...]
數(shù)據(jù)子成員是一個數(shù)組(注意縮減一個空格):
- - A - B - C
數(shù)據(jù)子成員是一個對象數(shù)組:
list: - id: 1 name: n1 - id: 2 name: n2
意思是 list 屬性是一個對象數(shù)組,每一個數(shù)組元素又是由 id、name 兩個屬性構成。
數(shù)組也可以使用流式(flow )的方式表示:
復合結(jié)構
數(shù)組和對象可以構成復合結(jié)構,例:
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.0 YAML Matrix Chat: '#chat:yaml.io' # Our New Group Chat Room! YAML IRC Channel: libera.chat#yaml # The old chat
標量
純量是最基本的,不可再分的值,包括:
- 字符串
- 布爾值
- 整數(shù)
- 浮點數(shù)
- Null
- 時間
- 日期
使用一個例子來快速了解標里可以使用哪些表示形式:
boolean: - TRUE #true,True都可以 - FALSE #false,F(xiàn)alse都可以 float: - 3.14 - 6.8523015e+5 #可以使用科學計數(shù)法 int: - 123 - 0b1010_0111_0100_1010_1110 #二進制表示 null: nodeName: 'node' parent: ~ #使用~表示null string: - 哈哈 - 'Hello world' #可以使用雙引號或者單引號包裹特殊字符 - newline newline2 #字符串可以拆成多行,每一行會被轉(zhuǎn)化成一個空格 date: - 2018-02-17 #日期必須使用ISO 8601格式,即yyyy-MM-dd datetime: - 2018-02-17T15:02:31+08:00 #時間使用ISO 8601格式,時間和日期之間使用T連接,最后使用+代表時區(qū)
引用
“&”錨點和“*****”別名,可以用來引用(相當于定義變量和使用變量):
- &V1 java - C - C++ - *V1
再看一個復雜的例子:
defaults: &defaults adapter: postgres host: localhost development: database: myapp_development <<: *defaults test: database: myapp_test <<: *defaults
& 用來建立錨點(defaults),<< 表示合并到當前數(shù)據(jù),* 用來引用錨點。
YAML 文件結(jié)構
以下是一個簡單的 YAML 配置文件示例:
server: port: 8080 context-path: /api spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: user password: pass jpa: hibernate: ddl-auto: update show-sql: true myapp: feature: enabled: true security: level: high
在這個例子中:
server
, spring
, myapp
是頂級配置項。
使用縮進表示層級結(jié)構,例如 datasource
是 spring
下的子項。
列表可以表示為:
myapp: roles: - admin - user - guest
Spring Boot 中的 YAML 配置
在 Spring Boot 應用中,YAML 文件通常命名為 application.yml
,放置在 src/main/resources
目錄下。
Spring Boot 會自動加載這個文件并將其屬性綁定到 Spring 環(huán)境中。
示例:配置數(shù)據(jù)庫連接
spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: dbuser password: dbpass driver-class-name: com.mysql.cj.jdbc.Driver
示例:配置多環(huán)境
你可以為不同的環(huán)境定義不同的配置文件,如 application-dev.yml
, application-test.yml
, application-prod.yml
,并在主配置文件中指定活躍的配置文件:
spring: profiles: active: dev
注意事項
確保正確使用縮進,因為錯誤的縮進會導致配置無法正確解析。
避免在 YAML 文件中使用 Tab 鍵,這可能導致解析錯誤。
注意字符串中特殊字符的處理,必要時可以使用雙引號或單引號。
- 單引號不會轉(zhuǎn)義【\n 則為普通字符串顯示】
- 雙引號會轉(zhuǎn)義【\n會顯示為換行符】
大文本
|
開頭,大文本寫在下層,保留文本格式,換行符正確顯示>
開頭,大文本寫在下層,折疊換行符
多文檔合并
- 使用
---
可以把多個yaml文檔合并在一個文檔中,每個文檔區(qū)依然認為內(nèi)容獨立
總結(jié)
YAML 提供了一種更為人性化的配置文件格式,它通過簡潔的結(jié)構化格式,使得配置信息更加易于理解和維護。
在 Spring Boot 中,通過使用 YAML,開發(fā)者可以輕松地管理和切換不同環(huán)境下的配置,優(yōu)化開發(fā)流程。
掌握 YAML 的基本寫法和在 Spring Boot 中的應用,將有助于提高你的開發(fā)效率。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot在項目停止(服務停止/關閉退出)之后執(zhí)行的方法
這篇文章主要給大家介紹了SpringBoot在項目停止(服務停止/關閉退出)之后執(zhí)行的兩種方法,實現(xiàn)DisposableBean接口和使用@PreDestroy注解,文中有詳細的代碼講解,具有一定的參考價值,需要的朋友可以參考下2023-12-12基于Spring概念模型:PathMatcher 路徑匹配器
這篇文章主要介紹了Spring概念模型:PathMatcher 路徑匹配器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java實現(xiàn)統(tǒng)計文件夾下所有文件的字數(shù)
這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)統(tǒng)計文件夾下所有文件的字數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-03-03Spring AOP之@Around,@AfterReturning使用、切不進去的解決方案
這篇文章主要介紹了Spring AOP之@Around,@AfterReturning使用、切不進去的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05