最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中YAML配置文件實(shí)例詳解

 更新時(shí)間:2023年04月10日 11:41:02   作者:準(zhǔn)Java全棧開發(fā)工程師  
前面一直在使用properties配置文件,spring boot也支持yaml配置文件,下面這篇文章主要給大家介紹了關(guān)于SpringBoot中YAML配置文件的相關(guān)資料,需要的朋友可以參考下

一、YAML 簡(jiǎn)介

1、什么是 YAML ?

  • YAML(YAML Ain’t Markup Language),一種數(shù)據(jù)序列化格式。
  • 這種格式的配置文件近些年逐漸進(jìn)入市場(chǎng),并開始占據(jù)主導(dǎo)地位。

2、優(yōu)點(diǎn)

  • 較 xml 類型和 properties 類型相比,更容易閱讀,結(jié)構(gòu)也更加的清晰。
  • 容易與腳本語(yǔ)言交互。
  • 以數(shù)據(jù)為核心,重?cái)?shù)據(jù)輕格式,輕格式并不是說可以不遵守格式,只是格式更加隨性一些。

3、擴(kuò)展名

  • 擴(kuò)展名有兩種,無(wú)論是那個(gè)擴(kuò)展名,都是 YAML 格式的配置文件,擁有 YAML 的屬性。
    • .yml ,這種擴(kuò)展名更加主流一些
    • .yaml

4、語(yǔ)法規(guī)則

  • 對(duì)大小寫非常敏感,如:定義 age 和 AGE 都會(huì)認(rèn)為是兩個(gè)屬性。
  • 屬性層級(jí)關(guān)系使用多行描述,每行結(jié)尾使用冒號(hào)結(jié)束。
  • 使用縮進(jìn)表示層級(jí)關(guān)系,同層級(jí)左側(cè)對(duì)齊,只允許使用空格。
  • 空格個(gè)數(shù)并不重要,只要保證同層級(jí)的左側(cè)對(duì)齊即可。
  • 屬性值前面添加空格。
  • #號(hào)表示注釋。

5、格式

server:
  port: 80

切記:屬性值前面必須有一個(gè)空格。

port 是 server 下的一個(gè)屬性,根據(jù)屬性層級(jí)之間使用多行描述,以及使用縮進(jìn)表示的規(guī)則,port 的書寫位置如上所示,但一般情況下,這種格式我們無(wú)需過多糾結(jié),我們回車換行后自動(dòng)提供的格式一般都是正確的。 6、數(shù)組數(shù)據(jù)

name: 準(zhǔn)Java全棧開發(fā)工程師
server:
  port: 80
# 數(shù)組格式
likes:
  - game
  - movie
  - music

數(shù)組數(shù)據(jù)的屬性值換行書寫,以 “-” 減號(hào)開頭,注意屬性值前空格,如上述 likes 所示。

二、三種配置文件

以配置端口號(hào)為例,介紹三種配置文件及其格式。

1、properties 類型

在未接觸到 yaml 之前,我們的配置文件大多數(shù)都是以 properties 結(jié)尾的文件。

server.port=80

格式為:屬性名=屬性值 。

這種方式還是非常常見的,我們之前在配置連接數(shù)據(jù)庫(kù)相關(guān)信息的 jdbc.properties 文件也是使用的該方式。

2、yml 類型

server:
  port: 81

將端口號(hào)設(shè)置為 81 。

3、yaml 類型

yml 和 yaml 只是擴(kuò)展名不同而已,其實(shí)是一種類型的配置文件。

server:
  port: 82

4、優(yōu)先級(jí)

當(dāng)項(xiàng)目中同時(shí)存在上述三個(gè)配置文件時(shí),用采用那個(gè)配置文件呢?我們可以通過觀察端口號(hào)來(lái)獲得優(yōu)先級(jí)順序。

  • 端口號(hào)為 80 ,說明優(yōu)先采用了 properties 類型的配置文件,它的優(yōu)先級(jí)最高。
  • 將 properties 配置文件中的配置內(nèi)容刪除,觀察 .yaml 和 .yml 那種文件優(yōu)先級(jí)更高。

  • 端口號(hào)又變?yōu)榱?81 ,說明 .yml 文件優(yōu)先級(jí)更高一些,雖然 .yaml 只是不同的擴(kuò)展名罷了。
  • 總結(jié):優(yōu)先級(jí)由高到低 properties > yml > yaml

三、YAML 代碼提示功能

有很多小伙伴反應(yīng),說在寫 YAML 文件時(shí),代碼不提示。

沒有代碼提示功能,對(duì)我們開發(fā)還是造成了一定的影響的,下面就帶著大家來(lái)解決這個(gè)問題。

首先進(jìn)入到模塊管理。

將 YAML 類型的兩個(gè)配置文件添加。

選中創(chuàng)建的兩個(gè)配置文件,完成后點(diǎn)擊 “OK” 即可。

此時(shí)的配置文件已經(jīng)變成了三個(gè)。

重新回到配置文件看是否實(shí)現(xiàn)了代碼提示功能。

已經(jīng)實(shí)現(xiàn)了代碼提示功能,雖然是 YAML 文件,但是代碼提示的還是按照 properties 類型進(jìn)行的,并不影響,找到需要的屬性直接回車后還是會(huì)呈現(xiàn)出 YAML 格式。

四、讀取 YAML 配置文件中的數(shù)據(jù)

1、數(shù)據(jù)準(zhǔn)備

sourceName: SpringBoot

server:
  port: 80

user:
  name: 準(zhǔn)Java全棧開發(fā)工程師
  age: 22
  likes:
    - music
    - game
    - movie

2、方式一:@Value

@SpringBootTest
class DemoApplicationTests {

    @Value("${sourceName}")
    private String sourceName;
    @Value("${server.port}")
    private Integer port;
    @Value("${user.likes[0]}")
    private String likes;

    @Test
    void contextLoads() {
        System.out.println(sourceName);
        System.out.println(port);
        System.out.println(likes);
    }
}

將要讀取的數(shù)據(jù)定義為屬性,使用 @Value 注解讀取配置文件中的數(shù)據(jù)并注入給屬性,之后在方法體中可以直接使用。

3、方式二:Environment

@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private Environment environment;

    @Test
    void contextLoads() {
        System.out.println(environment.getProperty("sourceName"));
        System.out.println(environment.getProperty("server.port"));
        System.out.println(environment.getProperty("user.likes[0]"));
    }
}

SpringBoot 提供有 Environment 對(duì)象,可以將配置文件中的所有數(shù)據(jù)都封裝到該對(duì)象中,使用 getProperty 方法,將想要讀取的數(shù)據(jù)名作為參數(shù)傳入即可。

4、方式三:自定義對(duì)象

user:
  name: 準(zhǔn)Java全棧開發(fā)工程師
  age: 22
  likes:
    - music
    - game
    - movie

對(duì)于配置類中的 user 數(shù)據(jù),其下還有很多子層,如果我們想一下子將 user 的所有數(shù)據(jù)都取出,應(yīng)該怎么做呢?將其封裝為一個(gè)對(duì)象。

@Component  // 將bean的創(chuàng)建工作交由Spring管理
// @ConfigurationProperties 注解表示加載配置文件
// 使用prefix前綴表示只加載指定前綴的數(shù)據(jù)
@ConfigurationProperties(prefix = "user")
public class User {
    private String name;
    private Integer age;
    private Object[] likes;
	// get、set、toString和構(gòu)造器方法省略
}

和我們定義實(shí)體類沒有太大的區(qū)別,只是這次不再是和數(shù)據(jù)庫(kù)表中的字段對(duì)應(yīng),而是和配置文件中定義的數(shù)據(jù)對(duì)應(yīng)。

除此之外,還需要使用 ConfigurationProperties 注解加載配置文件,使用 prefix 指定加載數(shù)據(jù)的前綴。

@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private User user;

    @Test
    void contextLoads() {
        System.out.println(user);
    }
}

使用該方式在定義實(shí)體類時(shí),會(huì)報(bào)紅提示

我們只需要在 pom.xml 文件中導(dǎo)入相應(yīng)的依賴即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

總結(jié)

到此這篇關(guān)于SpringBoot中YAML配置文件的文章就介紹到這了,更多相關(guān)SpringBoot YAML配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea熱部署插件jrebel正式版及破解版安裝詳細(xì)圖文教程

    idea熱部署插件jrebel正式版及破解版安裝詳細(xì)圖文教程

    這篇文章主要介紹了idea熱部署插件jrebel正式版及破解版安裝詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例

    idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例

    本文主要介紹了idea插件生成jpa實(shí)體類的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • java文件上傳至ftp服務(wù)器的方法

    java文件上傳至ftp服務(wù)器的方法

    這篇文章主要為大家詳細(xì)介紹了java文件上傳至ftp服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談Maven 項(xiàng)目中依賴的搜索順序

    淺談Maven 項(xiàng)目中依賴的搜索順序

    這篇文章主要介紹了淺談Maven 項(xiàng)目中依賴的搜索順序,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • springboot項(xiàng)目啟動(dòng)的時(shí)候參數(shù)無(wú)效的解決

    springboot項(xiàng)目啟動(dòng)的時(shí)候參數(shù)無(wú)效的解決

    這篇文章主要介紹了springboot項(xiàng)目啟動(dòng)的時(shí)候參數(shù)無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 帶你深入了解java-代理機(jī)制

    帶你深入了解java-代理機(jī)制

    Java 有兩種代理方式,一種是靜態(tài)代理,另一種是動(dòng)態(tài)代理。如果我們?cè)诖a編譯時(shí)就確定了被代理的類是哪一個(gè),那么就可以直接使用靜態(tài)代理;如果不能確定,那么可以使用類的動(dòng)態(tài)加載機(jī)制,在代碼運(yùn)行期間加載被代理的類這就是動(dòng)態(tài)代理
    2021-08-08
  • Hadoop之NameNode Federation圖文詳解

    Hadoop之NameNode Federation圖文詳解

    今天小編就為大家分享一篇關(guān)于Hadoop之NameNode Federation圖文詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Feign調(diào)用服務(wù)各種坑的處理方案

    Feign調(diào)用服務(wù)各種坑的處理方案

    這篇文章主要介紹了Feign調(diào)用服務(wù)各種坑的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • mybatis 通過攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作

    mybatis 通過攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作

    這篇文章主要介紹了mybatis 通過攔截器打印完整的sql語(yǔ)句以及執(zhí)行結(jié)果操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-10-10
  • java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn)

    java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn)

    這篇文章主要介紹了java如何確定一個(gè)鏈表有環(huán)及入口節(jié)點(diǎn),想了解數(shù)據(jù)結(jié)構(gòu)的同學(xué)可以參考下
    2021-04-04

最新評(píng)論

开阳县| 建瓯市| 米泉市| 台中县| 通化市| 云阳县| 贺州市| 台州市| 张掖市| 正蓝旗| 凤阳县| 汉寿县| 泾源县| 如东县| 安图县| 三原县| 曲沃县| 娱乐| 肇州县| 胶南市| 横峰县| 绵竹市| 皮山县| 宁远县| 彰化市| 景洪市| 吉木乃县| 当涂县| 牡丹江市| 郑州市| 驻马店市| 龙山县| 普兰店市| 泉州市| 永定县| 星座| 鄢陵县| 沂南县| 方正县| 泾阳县| 磐安县|