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

SpringBoot項(xiàng)目屬性配置(application.properties、yml和yaml)

 更新時(shí)間:2025年08月01日 10:05:38   作者:香餑餑~、  
SpringBoot支持多種配置文件格式,包括application.properties、yml和yaml,application.properties是鍵值對(duì)結(jié)構(gòu),常用于簡(jiǎn)單配置,如設(shè)置服務(wù)器端口,yml和yaml文件格式相同,使用縮進(jìn)表示層級(jí),適合復(fù)雜配置,下面就來(lái)詳細(xì)的介紹一下

簡(jiǎn)介

SpringBoot支持多種配置文件格式,包括application.properties、yml和yaml等。本文章將詳細(xì)介紹這三種配置文件的內(nèi)容格式和詳細(xì)用法,以及在程序中如何對(duì)配置文件中的屬性進(jìn)行讀取。文章內(nèi)容若存在錯(cuò)誤或需改進(jìn)的地方,歡迎大家指正!若對(duì)操作有任何疑問歡迎留言!非常感謝!

一、SpringBoot默認(rèn)配置文件

1、application.properties文件

該文件位于resources目錄下,是隨工程的創(chuàng)建而生成的一個(gè)空白文件(若沒有可手動(dòng)創(chuàng)建,必須保證名稱和類型為application.properties),在這個(gè)文件中可以進(jìn)行項(xiàng)目的配置。

2、文件內(nèi)容要求:

  • 鍵值對(duì)結(jié)構(gòu),格式為key=value
  • 注釋以#或者!開頭
  • 列表或者數(shù)組的值使用逗號(hào)隔開
  • 使用點(diǎn)號(hào) . 表示屬性層級(jí)
  • 想看系統(tǒng)支持哪些配置可以在Spring官方查看,鏈接:Common Application Properties

以配置啟動(dòng)端口為例,SpringBoot項(xiàng)目默認(rèn)的啟動(dòng)端口為8080,現(xiàn)在將這個(gè)端口配置為8888。如下,只需要在application.properties文件中配置server.port=8888即可。

二、yml或者yaml配置文件

1、簡(jiǎn)介

yml文件和yaml文件本質(zhì)上是同一種文件格式,沒有實(shí)質(zhì)性的技術(shù)區(qū)別。.yaml是官方推薦的標(biāo)準(zhǔn)擴(kuò)展名,.yml是因?yàn)樵缙赪indows限制3字符擴(kuò)展名而流行。無(wú)論使用哪個(gè)擴(kuò)展名,文件內(nèi)容都遵循相同的 YAML 規(guī)范。所以下面在介紹文件時(shí),也不再區(qū)分二者。

因?yàn)閥aml文件內(nèi)容的層次感更強(qiáng),內(nèi)容更加清爽,一目了然。所以,在實(shí)際項(xiàng)目中大部分情況下是使用.yaml或者.yml作為配置文件,application.properties文件使用的頻率就較低些。一般情況下,三者不會(huì)共存。

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

  • 大小寫敏感
  • 屬性層級(jí)關(guān)系使用多行描述,每行結(jié)尾使用冒號(hào)結(jié)束
  • 使用縮進(jìn)表示層級(jí)關(guān)系,同層級(jí)左側(cè)對(duì)齊,只允許使用空格(不允許使用Tab鍵)
  • 屬性值前面添加空格(屬性名與屬性值之前使用冒號(hào)+空格作為分割)
  • # 表示注釋
  • ${一級(jí)屬性名.二級(jí)屬性名... ...}表示屬性引用
  • 使用引號(hào)包裹帶有轉(zhuǎn)義字符的字符串才可以生效
# 普通使用
name: demo
 
# 層級(jí)關(guān)系
user:
  name: zhangsan
  age: 18
 
# 數(shù)組/列表格式
list:
  - zhangsan
  - lisi
  - wangwu
# 數(shù)組/列表縮略格式
list2: [zhangsan, lisi, wangwu]
 
# 對(duì)象列表
users:
  - name: zhangsan
    age: 18
  - name: lisi
    age: 19
  - name: wangwu
    age: 20
# 對(duì)象列表縮略格式
users2: [{name:zhangsan, age:18},{name:lisi, age:19},{name:wangwu, age:20}]
 
# ---------- 部分補(bǔ)充 ----------
# TRUE,true,True,FALSE,false,False
boolean: TRUE
# 6.23542343e+5 支持科學(xué)計(jì)數(shù)法
float: 3.14
# 0b1010_0111_0100_1010_1110 支持二進(jìn)制、八進(jìn)制、十六進(jìn)制
int: 123
# 使用 ~ 表示null
null: ~
# 字符串可以直接書寫
string: HelloWorld
# 可以使用雙引號(hào)包裹特殊字符
string2: "Hello\nWorld"
 
# 屬性引用
baseUrl: "127.0.0.1"
tmp: ${baseUrl}:${server.port}}

3、配置文件加載優(yōu)先級(jí)

當(dāng)application.properties文件、yaml文件、yml文件三者共存時(shí),文件中相同配置的加載優(yōu)先級(jí)如下:

application.properties > yml > yaml

而三個(gè)文件中不同的配置就不存在加載優(yōu)先級(jí)的問題,而是全部保留,也就是說三個(gè)文件的不同的屬性都會(huì)被讀到。

三、SpringBoot程序中讀取配置文件屬性的幾種方式

1、使用@Value注解讀取

程序中定義的屬性名與配置文件中的屬性名并沒有強(qiáng)關(guān)聯(lián),也就是定義的時(shí)候無(wú)需強(qiáng)制保持一致。

使用@Value注解讀取單個(gè)數(shù)據(jù),屬性名引用方式:${一級(jí)屬性名.二級(jí)屬性名... ...},只需要在大括號(hào)中加一個(gè)冒號(hào)然后寫值就可以設(shè)置默認(rèn)值:${一級(jí)屬性名.二級(jí)屬性名... ...:默認(rèn)值}。

2、使用Environment類對(duì)象獲取屬性

使用@Autowired在類中注入Environment對(duì)象,然后使用getProperty方法接收配置文件中的屬性名來(lái)獲取屬性值,可以進(jìn)行非空判斷來(lái)設(shè)置默認(rèn)值。

3、自定義對(duì)象映射配置文件屬性

(1)創(chuàng)建定義對(duì)象

注意:這里可能與聽到的知識(shí)不太一樣,可自行測(cè)試

配置項(xiàng)中的名稱需要與實(shí)體類的set方法后的名稱保持強(qiáng)一致。配置項(xiàng)名稱時(shí)可以不與實(shí)體類中的屬性名保持一致,因?yàn)橐话闱闆r下set/get方法后面的名稱是和屬性名一致的,比如自動(dòng)生成或者使用lombok生成的方法,都是一致的,所以也會(huì)有配置項(xiàng)名必須屬性名保持一致的說法。如果有特殊情況,那么只需要保證配置項(xiàng)中的名稱需要與實(shí)體類的set方法后的名稱強(qiáng)一致即可,與get方法、實(shí)體類名、實(shí)體屬性名、set方法形參無(wú)關(guān)。

(2)將類交給Spring的IOC容器

這個(gè)地方有兩種方式,注意只能使用其中一種,不可同時(shí)使用!

第一種方式:在自定義類上增加@Component注解,讓當(dāng)前的類直接注冊(cè)成IOC的Bean。

第二種方式:在啟動(dòng)類上聲明@EnableConfigurationProperties注解,并在指定屬性值,這里的屬性值如果只有一個(gè)類可以直接寫,若是多個(gè)類可以使用數(shù)組形式。這種方式會(huì)自動(dòng)將數(shù)組里面的類注冊(cè)為Bean,好處在于在這里可以直觀的觀察到有哪些讀取配置類。

(3)指定當(dāng)前類加載的數(shù)據(jù)

在自定義類上面增加@ConfigurationProperties(prefix = "student")注解,并使用prefix屬性指定配置文件中屬性前綴。綁定前綴命名規(guī)范:僅能使用純小寫字母、數(shù)字、下劃線作為合法的字符。

(4)示例

通過上面三部就已經(jīng)完成了配置文件中的屬性對(duì)自定義類屬性的映射,下面是一個(gè)使用示例:

到此這篇關(guān)于SpringBoot項(xiàng)目屬性配置(application.properties、yml和yaml)的文章就介紹到這了,更多相關(guān)SpringBoot 屬性配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • spring boot@EnableXXXX注解編程模型講解

    spring boot@EnableXXXX注解編程模型講解

    這篇文章主要介紹了spring boot@EnableXXXX注解編程模型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java源碼解析之超級(jí)接口Map

    Java源碼解析之超級(jí)接口Map

    今天給各位小伙伴介紹一下超級(jí)接口Map,文中對(duì)接口Map講的非常詳細(xì),對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助喲,需要的朋友可以參考下
    2021-05-05
  • springboot配置請(qǐng)求超時(shí)時(shí)間(Http會(huì)話和接口訪問)

    springboot配置請(qǐng)求超時(shí)時(shí)間(Http會(huì)話和接口訪問)

    本文主要介紹了springboot配置請(qǐng)求超時(shí)時(shí)間,包含Http會(huì)話和接口訪問兩種,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Spring中ClassPathXmlApplicationContext類的使用詳解

    Spring中ClassPathXmlApplicationContext類的使用詳解

    這篇文章主要介紹了Spring中ClassPathXmlApplicationContext類的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Cache原理解析

    Spring Cache原理解析

    Spring Cache是一個(gè)框架,它提供了基于注解的緩存功能,使得開發(fā)者可以很方便地將緩存集成到他們的應(yīng)用程序中,這篇文章主要介紹了Spring Cache原理解析,需要的朋友可以參考下
    2024-05-05
  • Java如何跳出當(dāng)前多重循環(huán)你知道嗎

    Java如何跳出當(dāng)前多重循環(huán)你知道嗎

    這篇文章主要為大家介紹了Java跳出當(dāng)前多重循環(huán),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Java設(shè)計(jì)模式中的抽象工廠模式解讀

    Java設(shè)計(jì)模式中的抽象工廠模式解讀

    這篇文章主要介紹了Java設(shè)計(jì)模式中的抽象工廠模式解讀,抽象工廠模式為創(chuàng)建一組相關(guān)或相互依賴的對(duì)象提供一個(gè)接口,而且無(wú)需指定他們的具體類,需要的朋友可以參考下
    2023-11-11
  • 基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換?

    基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換?

    這篇文章主要介紹了基于Java解決華為機(jī)試實(shí)現(xiàn)整數(shù)與IP地址間的轉(zhuǎn)換,文章舉例說明圍繞文章主題展開相關(guān)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-02-02
  • Spring AI 實(shí)現(xiàn) STDIO和SSE MCP Server的過程詳解

    Spring AI 實(shí)現(xiàn) STDIO和SSE MCP Server的過

    STDIO方式是基于進(jìn)程間通信,MCP Client和MCP Server運(yùn)行在同一主機(jī),主要用于本地集成、命令行工具等場(chǎng)景,這篇文章主要介紹了Spring AI 實(shí)現(xiàn) STDIO和SSE MCP Server,需要的朋友可以參考下
    2025-05-05
  • Java解決線程安全的兩種方式分享

    Java解決線程安全的兩種方式分享

    這篇文章主要為大家詳細(xì)介紹了Java中兩種常用的解決線程安全的方式——Synchornized和Lock,文中的示例代碼簡(jiǎn)潔易懂,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-06-06

最新評(píng)論