欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot YAML語(yǔ)法基礎(chǔ)詳細(xì)整理

 更新時(shí)間:2022年10月26日 17:11:09   作者:沫洺  
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語(yǔ)言)的遞歸縮寫。在開發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:“Yet Another Markup Language”(仍是一種標(biāo)記語(yǔ)言),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

YAML

Spring Boot 提供了大量的自動(dòng)配置,極大地簡(jiǎn)化了spring 應(yīng)用的開發(fā)過(guò)程,當(dāng)用戶創(chuàng)建了一個(gè) Spring Boot 項(xiàng)目后,即使不進(jìn)行任何配置,該項(xiàng)目也能順利的運(yùn)行起來(lái)。當(dāng)然,用戶也可以根據(jù)自身的需要使用配置文件修改 Spring Boot 的默認(rèn)設(shè)置。

SpringBoot 默認(rèn)使用以下 2 種全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yml/yaml

其中,application.yml 是一種使用 YAML 語(yǔ)言編寫的文件,它與 application.properties一樣,可以在 Spring Boot 啟動(dòng)時(shí)被自動(dòng)讀取,修改 Spring Boot 自動(dòng)配置的默認(rèn)值。

YAML 簡(jiǎn)介

YAML 全稱 YAML Ain't Markup Language,它是一種以數(shù)據(jù)為中心的標(biāo)記語(yǔ)言,比 XML 和 JSON 更適合作為配置文件。

想要使用 YAML 作為屬性配置文件(以 .yml 或 .yaml 結(jié)尾),需要將 SnakeYAML 庫(kù)添加到 classpath 下,Spring Boot 中的 spring-boot-starter-web 或 spring-boot-starter 都對(duì) SnakeYAML 庫(kù)做了集成, 只要項(xiàng)目中引用了這兩個(gè) Starter 中的任何一個(gè),Spring Boot 會(huì)自動(dòng)添加 SnakeYAML 庫(kù)到 classpath 下。

YAML 語(yǔ)法

YAML 的語(yǔ)法如下:

  • 使用縮進(jìn)表示層級(jí)關(guān)系。
  • 縮進(jìn)時(shí)不允許使用 Tab 鍵,只允許使用空格。(可設(shè)置Tab替換四個(gè)空格)
  • 縮進(jìn)的空格數(shù)不重要,但同級(jí)元素必須左側(cè)對(duì)齊。
  • 大小寫敏感。
  • #表示注釋。

YAML 常用寫法

YAML 支持以下幾種數(shù)據(jù)結(jié)構(gòu):

  • 普通的值(數(shù)字、字符串、布爾、日期)
  • 對(duì)象 屬性值的集合
  • 數(shù)組 一組按次序排列的值
  • 集合 List、Set 與數(shù)組一樣,Map與對(duì)象一樣鍵值對(duì)的集合

普通值(字面量)

  • 字面量是指單個(gè)的,不可拆分的值,例如:數(shù)字、字符串、布爾值、以及日期等。
  • 在 YAML 中,使用“key:[空格]value”的形式表示一對(duì)鍵值對(duì)(空格不能省略)
  • 字面量直接寫在鍵值對(duì)的“value”中即可,且默認(rèn)情況下字符串是不需要使用單引號(hào)或雙引號(hào)的

username: root
password: 123456

若字符串使用單引號(hào),則不會(huì)轉(zhuǎn)義特殊字符,特殊字符會(huì)輸出為其本身想表達(dá)的含義

username1: 'zhangsan \n lisi'

輸出:zhangsan \n lisi

若字符串使用雙引號(hào),則會(huì)轉(zhuǎn)義特殊字符,\n代表?yè)Q行

username2: "zhangsan \n lisi"

輸出:'zhangsan lisi'

對(duì)象(屬性和值)、Map(鍵值對(duì))

它們都是一對(duì)鍵值對(duì),YAML 為對(duì)象提供了 2 種寫法

普通寫法 ,使用縮進(jìn)表示對(duì)象與屬性的層級(jí)關(guān)系。

map1:
    name: 張三
    age: 23

行內(nèi)寫法

map2: {name: 李四,age: 24}

@ConfigurationProperties獲取鍵值對(duì)數(shù)據(jù)

@Value獲取鍵值對(duì)數(shù)據(jù)

@Value獲取map數(shù)據(jù)

map解析中,字符串一定要用"“把map所對(duì)應(yīng)的value包起來(lái),要不然解析會(huì)失敗,導(dǎo)致不能轉(zhuǎn)成 Map<StrObject>

test:
  map: "{name: '李四',age: 24}"

@Component
@Data
public class Test {
    @Value("#{${test.map}}")
    private Map<String,Object> map;
}

這里說(shuō)明一下,獲取的map值是Test(map={name=李四, age=24})這樣的,數(shù)據(jù)是在{}里的

YAML語(yǔ)法中如果一個(gè)值以 “{” 開頭, YAML 將認(rèn)為它是一個(gè)字典, 所以我們必須如下方式引用它

map: "{name: '李四',age: 24}"

數(shù)組、list、set

YAML 使用“-”表示數(shù)組、list、set 中的元素

普通寫法

  array1:
    - 張三
    - 李四
  list1:
    - 23
    - 24

行內(nèi)寫法

array2: [王五,毛六]
list2: [25,26]

@ConfigurationProperties獲取數(shù)組與集合數(shù)據(jù)

@Value根據(jù)索引獲取數(shù)組與集合單個(gè)元素?cái)?shù)據(jù)

想從yml配置文件中讀取數(shù)組,但是按照yml配置數(shù)組的形式有點(diǎn)麻煩,可以使用字符串去模擬數(shù)組

test:
  list: 張三,李四,王五

spring默認(rèn)時(shí)按照逗號(hào)進(jìn)行分割的,所以代碼中可以寫成

@Component
@Data
public class Test {
    @Value("${test.list}")
    private List<String> list;
}

另外,@Value注解是支持SpEL表達(dá)式的,所以還可以寫成

@Component
@Data
public class Test {
    @Value("#{'${test.list}'.split(',')}")
    private List<String> list;
}

復(fù)合結(jié)構(gòu)

以上幾種數(shù)據(jù)結(jié)構(gòu)可以任意組合使用,以實(shí)現(xiàn)不同的用戶需求

比如List中放Map

test:
  listInMap:
    - name: 張三
      age: 23
    - name: 李四
      age: 24
    - {name: 王五,age: 25}

YAML 組織結(jié)構(gòu)

一個(gè) YAML 文件可以由一個(gè)或多個(gè)文檔組成,文檔之間使用“---”作為分隔符,且個(gè)文檔相互獨(dú)立,互不干擾。如果 YAML 文件只包含一個(gè)文檔,則“---”分隔符可以省略。

#默認(rèn)配置
server:
  port: 8080
#切換配置
spring:
  profiles:
    active: test
---
#開發(fā)環(huán)境
server:
  port: 8081
spring:
  config:
    activate:
      on-profile: dev
---
#測(cè)試環(huán)境
server:
  port: 8082
spring:
  config:
    activate:
      on-profile: test
---
#生產(chǎn)環(huán)境
server:
  port: 8083
spring:
  config:
    activate:
      on-profile: prod

到此這篇關(guān)于SpringBoot YAML語(yǔ)法基礎(chǔ)詳細(xì)整理的文章就介紹到這了,更多相關(guān)SpringBoot YAML內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows如何使用bat腳本后臺(tái)啟動(dòng)/停止和重啟jar包服務(wù)

    windows如何使用bat腳本后臺(tái)啟動(dòng)/停止和重啟jar包服務(wù)

    這篇文章主要介紹了windows使用bat腳本后臺(tái)啟動(dòng)/停止和重啟jar包服務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java實(shí)現(xiàn)的打印螺旋矩陣算法示例

    Java實(shí)現(xiàn)的打印螺旋矩陣算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的打印螺旋矩陣算法,結(jié)合完整實(shí)例形式詳細(xì)分析了java打印螺旋矩陣的算法原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • Java 繼承方法實(shí)例詳解

    Java 繼承方法實(shí)例詳解

    這篇文章主要介紹了Java繼承中方法實(shí)例,非常的實(shí)用,這里推薦給大家,有需要的小伙伴可以參考下
    2017-04-04
  • java return用法實(shí)例詳解

    java return用法實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于java return用法以及相關(guān)知識(shí)點(diǎn)總結(jié),需要的朋友們參考下。
    2019-08-08
  • Java變量常量聲明和定義原理解析

    Java變量常量聲明和定義原理解析

    這篇文章主要介紹了Java變量常量聲明和定義原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot+Mybatis+Vue 實(shí)現(xiàn)商品模塊的crud操作

    SpringBoot+Mybatis+Vue 實(shí)現(xiàn)商品模塊的crud操作

    這篇文章主要介紹了SpringBoot+Mybatis+Vue 實(shí)現(xiàn)商品模塊的crud操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringCloud筆記(Hoxton)Netflix之Ribbon負(fù)載均衡示例代碼

    SpringCloud筆記(Hoxton)Netflix之Ribbon負(fù)載均衡示例代碼

    這篇文章主要介紹了SpringCloud筆記HoxtonNetflix之Ribbon負(fù)載均衡,Ribbon是管理HTTP和TCP服務(wù)客戶端的負(fù)載均衡器,Ribbon具有一系列帶有名稱的客戶端(Named?Client),對(duì)SpringCloud?Ribbon負(fù)載均衡相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-06-06
  • 全鏈路監(jiān)控平臺(tái)Pinpoint?SkyWalking?Zipkin選型對(duì)比

    全鏈路監(jiān)控平臺(tái)Pinpoint?SkyWalking?Zipkin選型對(duì)比

    這篇文章主要為大家介紹了全鏈路監(jiān)控平臺(tái)Pinpoint?SkyWalking?Zipkin實(shí)現(xiàn)的選型對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 詳解Java多線程編程中線程的啟動(dòng)、中斷或終止操作

    詳解Java多線程編程中線程的啟動(dòng)、中斷或終止操作

    在Java中start和tun方法可用被用來(lái)啟動(dòng)線程,而用interrupt方法來(lái)中斷或終止線程,以下我們就來(lái)詳解Java多線程編程中線程的啟動(dòng)、中斷或終止操作
    2016-07-07
  • Spring ProtocolResolver策略接口示例

    Spring ProtocolResolver策略接口示例

    這篇文章主要介紹了Spring ProtocolResolver策略接口示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論