免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

SpringBoot2.x基礎(chǔ)篇:配置文件的加載順序以及優(yōu)先級覆蓋

:2020年03月24日 程序員恒宇少年
分享到:

SpringBoot約定了配置文件,默認為 application.properties,通過該文件可以修改很多默認的配置,當然我們還可以在該配置文件內(nèi)添加自定義的配置,該文件通過 key=value的形式進行配置。1疑惑配置提示?...

SpringBoot約定了配置文件,默認為 application.properties,通過該文件可以修改很多默認的配置,當然我們還可以在該配置文件內(nèi)添加自定義的配置,該文件通過 key=value的形式進行配置。

1

疑惑配置提示?

當我們使用開發(fā)工具來配置時,就會出現(xiàn)相應(yīng)的提示,這要完全要歸功于 spring-configuration-metadata.json配置元數(shù)據(jù)文件,該文件內(nèi)記錄了配置的名稱類型歸屬類等信息,如果配置類型為 枚舉還可以實現(xiàn) 選擇性配置。

SpringBoot提供了一個依賴,它的主要任務(wù)就是自動生成配置元數(shù)據(jù),該依賴的名稱為 spring-boot-configuration-processor,在打包時會在 META-INF目錄生成一個名為 spring-configuration-metadata.json的文件。

2

配置方式

雖然默認使用 properties格式的配置文件,不過這種方式會導(dǎo)致配置的部分前綴冗余,可閱讀性稍差, SpringBoot內(nèi)部還支持使用 yaml方式的配置文件,只需要在 src/main/resources目錄下創(chuàng)建一個名為 application.yml文件即可,使用配置時同樣也有提供功能。

項目內(nèi)可以同時存在 application.properties、 application.yml兩個文件,經(jīng)過測試發(fā)現(xiàn), properties優(yōu)先級會高一些,相同名稱的配置,會將 yml內(nèi)的配置覆蓋掉。

3

指定配置文件

如果你的應(yīng)用程序配置文件的名稱不是 application,你想要進行自定義,可以通過 --spring.config.name命令行參數(shù)進行指定,如下所示:

  1. java

  2. -

  3. jar project

  4. -

  5. sample

  6. .

  7. jar

  8. --

  9. spring

  10. .

  11. config

  12. .

  13. name

  14. =

  15. custome

注意事項:我們只需要指定配置文件的名稱即可,可以使用 properties或 yaml文件格式,上面的配置會加載 src/main/resources/custome.yml或 src/main/resources/custome.properties。

通過 --spring.config.name僅僅是修改了配置文件的名稱,那如果是修改配置文件所處的目錄位置,我們需要怎么做呢?

SpringBoot已經(jīng)給我們準備好了,通過 --spring.config.location參數(shù)就可以指定配置文件的位置,如下所示:

  1. java

  2. -

  3. jar project

  4. -

  5. sample

  6. .

  7. jar

  8. --

  9. spring

  10. .

  11. config

  12. .

  13. location

  14. =

  15. classpath

  16. :/

  17. configs

  18. /

  19. custome

  20. .

  21. yml

如果一個配置文件無法滿足你的需求,那你看看下面這個方式:

  1. java

  2. -

  3. jar project

  4. -

  5. sample

  6. .

  7. jar

  8. --

  9. spring

  10. .

  11. config

  12. .

  13. location

  14. =

  15. classpath

  16. :/

  17. configs

  18. /

  19. custome

  20. .

  21. yml

  22. ,

  23. classpath

  24. :/

  25. configs

  26. /

  27. default

  28. .

  29. properties

注意事項:支持通過命令行參數(shù)的方式指定多個配置文件,使用英文半角 , 隔開即可。

如果你通過 spring.config.location指定的不是一個文件而是一個目錄,在路徑最后務(wù)必添加一個"/"結(jié)束,然后結(jié)合 spring.config.name進行組合配置文件,組合示例如下:

  1. # 加載/configs/application.properties 或 /configs/application.yml(默認文件名)

  2. java

  3. -

  4. jar project

  5. -

  6. sample

  7. .

  8. jar

  9. --

  10. spring

  11. .

  12. config

  13. .

  14. location

  15. =

  16. classpath

  17. :/

  18. configs

  19. /

  20. # 加載/configs/custome.properties 或 /configs/custome.yml

  21. java

  22. -

  23. jar project

  24. -

  25. sample

  26. .

  27. jar

  28. --

  29. spring

  30. .

  31. config

  32. .

  33. location

  34. =

  35. classpath

  36. :/

  37. configs

  38. /

  39. --

  40. spring

  41. .

  42. config

  43. .

  44. name

  45. =

  46. custome

注意事項: spring.config.name該配置參數(shù)默認值為 application,所以如果只是指定了 spring.config.location并為目錄形式,上面示例中會自動將 spring.config.name追加到目錄路徑后,如果指定的 spring.config.location并非是一個目錄,這里會忽略 spring.config.name的值。

4

加載順序

SpringBoot應(yīng)用程序在啟動時會遵循下面的順序進行加載配置文件:

  1. 1. 類路徑下的配置文件

  2. 2. 類路徑內(nèi)config子目錄的配置文件

  3. 3. 當前項目根目錄下的配置文件

  4. 4. 當前項目根目錄下config子目錄的配置文件

示例項目配置文件存放結(jié)構(gòu)如下所示:

  1. .

  2. project

  3. -

  4. sample

  5. ├──

  6. config

  7. ├──

  8. application

  9. .

  10. yml

  11. 4

  12. └──

  13. src

  14. /

  15. main

  16. /

  17. resources

  18. |

  19. ├──

  20. application

  21. .

  22. yml

  23. 1

  24. |

  25. └──

  26. config

  27. |

  28. |

  29. ├──

  30. application

  31. .

  32. yml

  33. 2

  34. ├──

  35. application

  36. .

  37. yml

  38. 3

啟動時加載配置文件順序:1 > 2 > 3 > 4

src/main/resources下的配置文件在項目編譯時,會放在 target/classes下。

5

優(yōu)先級覆蓋

SpringBoot配置文件存在一個特性,優(yōu)先級較高的配置加載順序比較靠后, 相同名稱的配置 優(yōu)先級較高的會 覆蓋掉 優(yōu)先級較低的內(nèi)容。

為了更好地解釋這一點,我們根據(jù)對應(yīng)的加載順序分別創(chuàng)建一個 application.yml配置文件,來驗證根據(jù)優(yōu)先級的不同是否存在覆蓋問題,如下圖所示:

在上面四個配置文件中都有一個名為 name的配置,而紅色字體標注的內(nèi)容就是每個配置文件 name的配置內(nèi)容,下面我們來啟動項目測試下輸出內(nèi)容。

6

運行測試

在測試之前我們讓啟動類實現(xiàn) CommandLineRunner接口,如下所示:

  1. @SpringBootApplication

  2. public

  3. class

  4. LoadOrderOfConfigFilesApplication

  5. implements

  6. CommandLineRunner

  7. {

  8. public

  9. static

  10. void

  11. main

  12. (

  13. String

  14. []

  15. args

  16. )

  17. {

  18. SpringApplication

  19. .

  20. run

  21. (

  22. LoadOrderOfConfigFilesApplication

  23. .

  24. class

  25. ,

  26. args

  27. );

  28. }

  29. @Value

  30. (

  31. "${name}"

  32. )

  33. private

  34. String

  35. name

  36. ;

  37. @Override

  38. public

  39. void

  40. run

  41. (

  42. String

  43. ...

  44. args

  45. )

  46. throws

  47. Exception

  48. {

  49. System

  50. .

  51. out

  52. .

  53. println

  54. (

  55. "配置名稱:"

  56. +

  57. name

  58. );

  59. }

  60. }

項目啟動后通過 run方法進行打印 ${name}配置的內(nèi)容。

測試一:順序覆蓋

保留上面四個對應(yīng)加載順序的配置文件,啟動項目,控制臺輸出內(nèi)容:

  1. 配置名稱:

  2. project

  3. /

  4. config

期望與實際輸出是符合的,項目根下的 config目錄是 最后加載的,所以它的 優(yōu)先級相對其他三個來說是 最高的,覆蓋順序為:4 > 3 > 2 > 1

測試二:跨順序覆蓋

上一個測試點我們對每一個加載順序都對應(yīng)添加了一個配置文件,那如果我們只有兩個 project/config、 classes/config兩個目錄的配置文件,是否按照優(yōu)先級進行覆蓋呢?

刪除另外兩個,只保留 project/config、 classes/config兩個位置的配置文件,啟動項目控制臺輸出如下所示:

  1. 配置名稱:

  2. project

  3. /

  4. config

同樣是輸出了優(yōu)先級最高的 project/config配置文件的內(nèi)容,覆蓋順序為:4 > 1

測試三:單順序加載

平時在項目開發(fā)中一般都是將 application.yml配置文件放在 src/main/resources目錄下,然而根據(jù)上面的加載順序來看,我們可以將配置文件放置在任意一處,啟動時都會進行加載。

僅保留 classes/config位置的配置文件,啟動項目控制臺輸出內(nèi)容如下所示:

  1. 配置名稱:

  2. classes

  3. /

  4. config

IDEA對 SpringBoot的支持真的很強大, classes/config下的配置文件同樣提供了 關(guān)鍵字提醒功能。

7

總結(jié)

了解配置文件的加載順序,才能得心應(yīng)手的進行配置覆蓋,完全控制在不同環(huán)境下使用不同的配置內(nèi)容,要記住 classes/application.yml優(yōu)先級最低, project/config/application.yml優(yōu)先級最高。

[我要糾錯]
[ 編輯:王振袢 &發(fā)表于江蘇 ]
關(guān)鍵詞: SpringBoot 定了 配置文件 認為 application.properties

來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權(quán)及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:SpringBoot2.x基礎(chǔ)篇:配置文件的加載順序以及優(yōu)先級覆蓋

Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號-3技術(shù)支持:南京博盛藍睿網(wǎng)絡(luò)科技有限公司

南京思必達教育科技有限公司版權(quán)所有   百度統(tǒng)計

主站蜘蛛池模板: 日本欧美一区二区三区视频 | 欧美日韩亚洲无线码在线观看 | 在线观看一级毛片免费 | 免费看黄视频 | 黄色一级生活片 | 66j8影院xxxx深夜 | 天天爽天天碰狠狠添 | 国产精品久久久久久久专区 | 五月激情网站 | 成人黄色在线网站 | 韩国午夜tv免费影院 | 成人网18免费下 | 在线xx | 德国free性video极品 | 老黄网站在线观看免费 | 欧美久久一区二区三区 | 一级片黄色片 | 色播影院性播影院私人影院 | avav网站| 日韩中文字幕免费观看 | 国产成人爱情动作片在线观看 | 黄视频网站入口 | 久色视频网 | 人人爽人人爽人人片av免费 | 亚洲香蕉伊在人在线观看9 亚洲香蕉一区二区三区在线观看 | 一级视频在线免费观看 | 免费在线日韩 | 视频一区在线播放 | 美女下面粉嫩粉嫩冒白浆高清 | 精品九九视频 | 国产中文在线 | 男女交性过程视频无遮挡在线 | 一级毛片日韩 | 亚洲精品乱码久久久久久蜜桃欧美 | 天天摸天天操天天射 | 99视频全部看免费观 | 91精品国产高清久久久久久 | 久久视热这只是精品222 | www涩涩| 一级特黄a视频 | 国产欧美精品一区二区色综合 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價格低
  • 蘋果原裝手機殼