Spring YAML與屬性檔案配置檔案對比 | Baeldung
YAML是用於配置檔案的人性化表示法。為什麼相比Spring Boot中的屬性檔案Properties,我們更喜歡這種資料序列化?除了可讀性和減少重複之外,YAML是在部署時Configuration as Code(配置即程式設計)的理想語言。
如12因子身份驗證器建議的那樣,將YAML用於Spring DevOps有助於在環境中儲存配置變數。
在本教程中,我們將比較Spring YAML和屬性檔案,以檢查使用它們之間的主要優點。但是請記住,選擇YAML而非屬性檔案配置有時是個人喜好的決定。
YAML代表“ YAML Ain't Markup Language” 的遞迴首字母縮寫。它具有以下特徵:
- 更清晰,更人性化
- 非常適合分層配置資料
- 它支援增強功能,例如地圖,列表和標量型別
這些功能使YAML成為Spring配置檔案的完美伴侶。在這裡,對於那些以YAML開頭的人來說要小心一點:由於其縮排規則,一開始編寫它可能有點乏味。
讓我們看看它是如何工作的!
YAML是一種用於配置檔案的特殊資料格式。它更具可讀性,並且在屬性檔案上提供了增強的功能。因此,在屬性檔案配置上推薦這種表示法是有意義的。此外,從1.2版開始,YAML是JSON的超集。
Spring配置檔案允許分離環境並對其應用不同的屬性。YAML增加了在同一檔案中包含多個配置檔案的可能性。
在我們的案例中,出於部署目的,我們將有三個:測試test,開發dev和生產prod:
spring: profiles: active: - test --- spring: profiles: test name: test-YAML environment: testing servers: - www.abc.test.com - www.xyz.test.com --- spring: profiles: prod name: prod-YAML environment: production servers: - www.abc.com - www.xyz.com --- spring: profiles: dev name: ${DEV_NAME:dev-YAML} environment: development servers: - www.abc.dev.com - www.xyz.dev.com |
現在讓我們檢查spring.profiles.active屬性,該屬性預設情況下分配測試環境。我們可以使用不同的配置檔案重新部署工件,而無需再次構建原始碼。
Spring的另一個有趣功能是您可以通過環境變數啟用配置檔案:
export SPRING_PROFILES_ACTIVE=dev |
可以配置YAML屬性,直接從環境中分配值:
name: ${DEV_NAME:dev-YAML} |
我們可以看到,如果未配置任何環境變數,則使用預設值test-YAML。
YAML的層次結構提供了減少配置屬性檔案高層的方法。我們來看一個例子的區別:
component: idm: url: myurl user: user password: password description: > this should be a long description service: url: myurlservice token: token description: > this should be another long description |
使用屬性檔案,相同的配置將變得多餘:
component.idm.url=myurl component.idm.user=user component.idm.password=password component.idm.description=this should be a long \ description component.service.url=myurlservice component.service.token=token component.service.description=this should be another long \ description |
YAML的層次性極大地提高了可讀性。這不僅是避免重複的問題,而且是很好使用的縮排,它完美地描述了配置的含義和用途。
我們可以使用YAML和屬性檔案配置列表,有兩種方法可以分配值並將它們儲存在列表中:
servers: - www.abc.test.com - www.xyz.test.com external: [www.abc.test.com, www.xyz.test.com] |
兩個示例提供了相同的結果。使用屬性檔案進行的等效配置將更難以閱讀:
servers[0]=www.abc.test.com servers[1]=www.xyz.test.com external=www.abc.test.com, www.xyz.test.com |
同樣,YAML版本更加易於閱讀和清晰。
同樣,我們可以配置map:
map: firstkey: key1 secondkey: key2 |
相關文章
- spring注入配置檔案屬性到java類SpringJava
- java解析yaml配置檔案JavaYAML
- 【SpringBoot】YAML 配置檔案Spring BootYAML
- 認識 Linux 檔案屬性及檔案配置(轉)Linux
- 屬性配置檔案詳解(2)
- YAML檔案YAML
- 檔案屬性
- Spring中利用配置檔案和@value注入屬性值Spring
- spring、spring-boot配置檔案屬性內容加解密Springboot解密
- python pyyaml操作yaml配置檔案PythonYAML
- smali檔案對比java檔案Java
- 檔案的屬性
- 檔案屬性資訊
- Properties屬性檔案
- Java程式碼修改yml配置檔案屬性Java
- Spring中如何為屬性配置檔案自動產生文件?Spring
- ls命令 & 檔案屬性
- 檔案時間屬性
- Linux檔案屬性Linux
- YAML檔案簡介YAML
- grep檔案比對
- 比對檔案sam檔案的解讀
- Spring Boot、Nacos配置檔案properties、yml、yaml的優先順序Spring BootYAML
- Linux的檔案屬性和目錄配置Linux
- python讀取yaml配置檔案的方法PythonYAML
- 目錄與檔案屬性:編寫ls
- Spring Boot入門(一):使用IDEA建立Spring Boot專案並使用yaml配置檔案Spring BootIdeaYAML
- .ts檔案和d.ts檔案對比
- Mac系統檔案屬性Mac
- 改變檔案屬性 (轉)
- 檔案屬性解釋(轉)
- c++ 解析yaml檔案C++YAML
- Spring Boot 配置檔案Spring Boot
- Spring檔案最全配置Spring
- 在VC++下對檔案屬性的獲取與更改(轉)C++
- SpringBoot基礎學習(二) SpringBoot全域性配置檔案及配置檔案屬性值注入Spring Boot
- linux 檔案比對Linux
- Unix與FreeBSD下檔案的屬性(轉)