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

SpringBoot中的配置文件加載優(yōu)先級詳解

 更新時(shí)間:2024年01月02日 11:18:52   作者:my_sky_  
這篇文章主要介紹了SpringBoot中的配置文件加載優(yōu)先級詳解,springboot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring?boot的默認(rèn)配置文件,需要的朋友可以參考下

springboot配置文件的加載先后順序

1、內(nèi)部配置加載順序

springboot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring boot的默認(rèn)配置文件

  • –file:./config/ --> 當(dāng)前項(xiàng)目根目錄下的 config 目錄下
  • –file:./ --> 當(dāng)前項(xiàng)目的根目錄下
  • –classpath:/config/ --> resources/config目錄下
  • –classpath:/ --> resources目錄下

SpringBoot官網(wǎng):

在這里插入圖片描述

優(yōu)先級由高到底,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置。

  • 如果低優(yōu)先級存在高優(yōu)先級沒有的屬性,則會互補(bǔ)配置。
  • 如果同一個(gè)配置屬性,在多個(gè)配置文件都配置了,默認(rèn)使用第1個(gè)讀取到的

這四個(gè)位置是默認(rèn)位置,即 Spring Boot 啟動,默認(rèn)會從這四個(gè)位置按順序去查找相關(guān)屬性并加載。

我們也可以通過 spring.config.location 屬性來手動的指定配置文件位置,指定完成后,系統(tǒng)就會自動去指定目錄下查找 application.properties 文件。

	java -jar properties-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/javaboy/

項(xiàng)目默認(rèn)加載的配置文件名是 application ,我們可以通過屬性 spring.config.name 來指定配置文件的文件名。

使用 spring.config.location 屬性重新定義配置文件的位置,它會覆蓋掉默認(rèn)的四個(gè)位置。使用 spring.config.additional-location 這個(gè)屬性自定義配置文件位置,表示在默認(rèn)的四個(gè)位置的基礎(chǔ)上,再添加幾個(gè)位置,新添加的位置的優(yōu)先級大于原本的位置。 在自定義配置文件位置時(shí),值一定要以 / 結(jié)尾。例如 spring.config.location=classpath:/myconfig/

2、外部配置加載順序

SpringBoot也可以從以下位置加載配置; 優(yōu)先級從高到低;高優(yōu)先級的配置覆蓋低優(yōu)先級的配置,所有的配置會形成互補(bǔ)配置

(1)命令行參數(shù) (加載時(shí)優(yōu)先加載) 所有的配置都可以在命令行上進(jìn)行指定( --配置)。 可以通過指定 --spring.config.location來改變默認(rèn)的配置文件位置:

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.yml

多個(gè)配置用空格分開;格式為: --配置項(xiàng)=值

(2)來自java:comp/env的JNDI屬性

(3)Java系統(tǒng)屬性(在命令行中使用-D指定),可通過System.getProperties()獲得相關(guān)內(nèi)容

java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar

(4)操作系統(tǒng)環(huán)境變量

大多數(shù)操作系統(tǒng)不允許使用句點(diǎn)分隔的鍵名,使用下劃線代替(例如,SPRING_CONFIG_NAME代替spring.config.name)

(5)RandomValuePropertySource配置的random.*屬性值

(6)jar包外部的application-{profile}.properties或application-{profile}.yml(帶spring.profile)配置文件。

(7)jar包內(nèi)部的application-{profile}.properties或application-{profile}.yml(帶spring.profile)配置文件。

(8)jar包外部的application.properties或application.yml(不帶spring.profile)配置文件。

(9)jar包內(nèi)部的application.properties或application.yml(不帶spring.profile)配置文件。

(10)@Configuration注解類上的@PropertySource

(11)通過SpringApplication.setDefaultProperties指定的默認(rèn)屬性

其中常用的為:(1)(6)(7)(8)(9)(10)

總結(jié)

  • 優(yōu)先加載操作系統(tǒng)層面的配置、命令行
  • 由jar包外向jar包內(nèi)進(jìn)行尋找,優(yōu)先查找config目錄。
  • 優(yōu)先加載帶profile(application-{profile}.yml)的,后加載不帶profile(application.yml)的
  • 高優(yōu)先級的配置覆蓋低優(yōu)先級的配置,所有的配置會形成互補(bǔ)配置

3、遠(yuǎn)程配置中心

以Nacos為例:默認(rèn)遠(yuǎn)程配置優(yōu)先級最高

可以通過在遠(yuǎn)程配置中心中做如下配置,設(shè)置本地配置覆蓋遠(yuǎn)程配置:

spring:
  cloud:
    config:
      # 是否允許本地配置覆蓋遠(yuǎn)程配置
      allow-override: true
      # 是否一切以本地配置為準(zhǔn),默認(rèn)false
      override-none: false
      # 系統(tǒng)環(huán)境變量或系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置
      # 本地配置文件中配置優(yōu)先級低于遠(yuǎn)程配置,默認(rèn)true
      override-system-properties: true

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

相關(guān)文章

  • mybatis3中@SelectProvider傳遞參數(shù)方式

    mybatis3中@SelectProvider傳遞參數(shù)方式

    這篇文章主要介紹了mybatis3中@SelectProvider傳遞參數(shù)方式。具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中不定參數(shù)用法小結(jié)

    Java中不定參數(shù)用法小結(jié)

    在Java中,不定參數(shù)是指方法的參數(shù)數(shù)量可以變化的情況,本文主要介紹了Java中不定參數(shù)用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • java雙端隊(duì)列之ArrayDequeue原理講解

    java雙端隊(duì)列之ArrayDequeue原理講解

    這篇文章主要為大家介紹了java雙端隊(duì)列之ArrayDequeue原理講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java踩坑記錄之Arrays.AsList

    Java踩坑記錄之Arrays.AsList

    這篇文章主要給大家介紹了關(guān)于Java踩坑記錄之Arrays.AsList的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java中實(shí)現(xiàn)map與對象相互轉(zhuǎn)換的幾種實(shí)現(xiàn)

    java中實(shí)現(xiàn)map與對象相互轉(zhuǎn)換的幾種實(shí)現(xiàn)

    這篇文章主要介紹了java中實(shí)現(xiàn)map與對象相互轉(zhuǎn)換的幾種實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring Boot Web 靜態(tài)文件緩存處理的方法

    Spring Boot Web 靜態(tài)文件緩存處理的方法

    本篇文章主要介紹了Spring Boot Web 靜態(tài)文件緩存處理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • java環(huán)境配好后jar文件打開命令框閃退(無打開方式,無反應(yīng))解決辦法

    java環(huán)境配好后jar文件打開命令框閃退(無打開方式,無反應(yīng))解決辦法

    在Java開發(fā)中我們經(jīng)常會遇到運(yùn)行Jar包時(shí)閃退的問題,下面這篇文章主要給大家介紹了關(guān)于java環(huán)境配好后jar文件打開命令框閃退(無打開方式,無反應(yīng))的解決辦法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • 淺析打開eclipse出現(xiàn)Incompatible JVM的解決方法

    淺析打開eclipse出現(xiàn)Incompatible JVM的解決方法

    本篇文章是對打開eclipse出現(xiàn)Incompatible JVM的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • SpringMVC結(jié)合模板模式實(shí)現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)

    SpringMVC結(jié)合模板模式實(shí)現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)

    我們經(jīng)常會遇到需要傳遞對象的場景,有時(shí)候,我們需要將一個(gè)對象的數(shù)據(jù)傳遞給另一個(gè)對象進(jìn)行處理,但是又不希望直接暴露對象的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)細(xì)節(jié),所以本文給大家介紹了SpringMVC結(jié)合模板模式實(shí)現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù),需要的朋友可以參考下
    2024-03-03
  • JavaWeb中的路徑問題解讀

    JavaWeb中的路徑問題解讀

    這篇文章主要介紹了JavaWeb中的路徑問題解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論