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

Spring?Boot分離配置文件的多種方式總結(jié)

 更新時(shí)間:2022年11月21日 11:08:29   作者:江南一點(diǎn)雨  
Spring Boot可以外部化程序配置,以便可以在不同環(huán)境中使用相同的應(yīng)用程序代碼;當(dāng)然Spring Boot可以將配置文件進(jìn)行拆分,以便于激活不同的運(yùn)行環(huán)境,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Spring?Boot分離配置文件的多種方式,需要的朋友可以參考下

今天聊一個(gè)小伙伴在星球上的提問(wèn):

問(wèn)題不難,解決方案也有很多,因此我決定擼一篇文章和大家仔細(xì)說(shuō)說(shuō)這個(gè)問(wèn)題。

1. 配置文件位置

首先小伙伴們要明白,Spring Boot 默認(rèn)加載的配置文件是 application.properties 或者 application.yaml,默認(rèn)的加載位置一共有五個(gè),五個(gè)位置可以分為兩類:

從 classpath 下加載,這個(gè)又細(xì)分為兩種:

  • 直接讀取 classpath 下的配置文件,對(duì)應(yīng)到 Spring Boot 項(xiàng)目中,就是 resources 目錄下的配置。
  • 讀取 classpath:/config/ 目錄下的文件,對(duì)應(yīng)到 Spring Boot 項(xiàng)目中就是 resources/config 目錄下的配置。

這兩種情況如下圖:

從項(xiàng)目所在的當(dāng)前目錄下加載,這個(gè)又細(xì)分為三種情況:

  • 從項(xiàng)目當(dāng)前目錄下加載配置文件。
  • 從項(xiàng)目當(dāng)前目錄下的 config 文件夾中加載配置文件。
  • 從項(xiàng)目當(dāng)前目錄下的 config 文件夾的子文件夾中加載(孫子文件夾不可以)。

這三種情況如下圖:

config 目錄下的配置文件可以被加載,config/a 目錄下的配置文件也可以被加載,但是 config/a/b 目錄下的配置文件不會(huì)被加載,因?yàn)椴皇侵苯幼游募A。

配置文件可以放在這么多不同的位置,如果同一個(gè)屬性在多個(gè)配置文件中都寫了,那么后面加載的配置會(huì)覆蓋掉前面的。例如在 classpath:application.yaml 中設(shè)置項(xiàng)目端口號(hào)是 8080,在 項(xiàng)目當(dāng)前目錄/config/a/application.yaml 中設(shè)置項(xiàng)目端口是 8081,那么最終的項(xiàng)目端口號(hào)就是 8081。

這是默認(rèn)的文件位置。

如果你不想讓自己的配置文件叫 application.properties 或者 application.yaml,那么也可以自定義配置文件名稱,只需要在項(xiàng)目啟動(dòng)的時(shí)候指定配置文件名即可,例如我想設(shè)置我的配置文件名為 app.yaml,那么我們可以在啟動(dòng) jar 包的時(shí)候按照如下方式配置,此時(shí)系統(tǒng)會(huì)自動(dòng)去上面提到的五個(gè)位置查找對(duì)應(yīng)的配置文件:

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.name=app

如果項(xiàng)目已經(jīng)打成 jar 包啟動(dòng)了,那么前面所說(shuō)的目錄中,后三個(gè)中的項(xiàng)目當(dāng)前目錄就是指 jar 包所在的目錄。

如果你不想去這五個(gè)位置查找,那么也可以在啟動(dòng) jar 包的時(shí)候明確指定配置文件的位置和名稱,如下:

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.location=optional:classpath:/app.yaml

注意,我在 classpath 前面加上了 optional: 表示如果這個(gè)配置文件不存在,則按照默認(rèn)的方式啟動(dòng),而不會(huì)報(bào)錯(cuò)說(shuō)找不到這個(gè)配置文件。如果不加這個(gè)前綴,那么當(dāng)系統(tǒng)找不到指定的配置文件時(shí),就會(huì)拋出 ConfigDataLocationNotFoundException 異常,進(jìn)而導(dǎo)致應(yīng)用啟動(dòng)失敗。

如果配置文件和 jar 包在相同的目錄結(jié)構(gòu)下,如下圖:

那么啟動(dòng)腳本如下:

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.location=optional:javaboy/app.yaml

如果 spring.config.location 的配置,只是指定了目錄,那么必須以 / 結(jié)尾,例如上面這個(gè)啟動(dòng)腳本,也可以按照如下方式啟動(dòng):

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.location=optional:javaboy/ --spring.config.name=app

通過(guò) spring.config.location 屬性鎖定配置文件的位置,通過(guò) spring.config.name 屬性鎖定配置文件的文件名。

2. 額外位置

前面我們關(guān)于配置文件位置的設(shè)置,都是覆蓋掉已有的配置,如果不想覆蓋掉 Spring Boot 默認(rèn)的配置文件查找策略,又想加入自己的,那么可以按照如下方式指定配置文件位置:

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.additional-location=optional:javaboy/app.yaml

如果這個(gè)額外指定的配置文件和已有的配置文件有沖突,那么還是以后來(lái)者為準(zhǔn)。

3. 位置通配符

有一種情況,假設(shè)我有 redis 和 mysql 的配置,我想將之放在兩個(gè)不同的文件夾中以便于管理,像下面這樣:

那么在項(xiàng)目啟動(dòng)時(shí),可以通過(guò)通配符 * 批量掃描相應(yīng)的文件夾:

java -jar boot_config_file-0.0.1-SNAPSHOT.jar --spring.config.location=optional:config/*/

使用通配符批量掃描 mysql 和 redis 目錄時(shí),默認(rèn)的加載順序是按照文件夾的字母排序,即先加載 mysql 目錄后加載 redis 目錄。

需要注意的是,通配符只能用在外部目錄中,不可以用在 classpath 中的目錄上。另外,包含了通配符的目錄,只能有一個(gè)通配符 *,不可以有多個(gè),并且還必須是以 */ 結(jié)尾,即一個(gè)目錄的最后部分可以不確定。

4. 導(dǎo)入外部配置

從 Spring Boot2.4 開始,我們也可以使用 spring.config.import 方法來(lái)導(dǎo)入配置文件,相比于 additional-location 配置,這個(gè) import 導(dǎo)入更加靈活,可以導(dǎo)入任意名稱的配置文件。

spring.config.import=optional:file:./dev.properties

甚至,這個(gè) spring.config.import 還可以導(dǎo)入無(wú)擴(kuò)展名的配置文件,例如我有一個(gè)配置文件,是 properties 格式的,但是這個(gè)這個(gè)配置文件沒(méi)有擴(kuò)展名,現(xiàn)在我想將之作為 properties 格式的配置文件導(dǎo)入,方式如下:

spring.config.import=optional:file:/Users/sang/dev[.properties]

好啦,看完上面的內(nèi)容,文章一開始的問(wèn)題答案就不用我多說(shuō)了吧~

總結(jié)

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

相關(guān)文章

  • java+selenium 網(wǎng)易云音樂(lè)刷累計(jì)聽歌數(shù)的方法

    java+selenium 網(wǎng)易云音樂(lè)刷累計(jì)聽歌數(shù)的方法

    這篇文章主要介紹了java+selenium 網(wǎng)易云音樂(lè)刷累計(jì)聽歌數(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • java 增強(qiáng)型for循環(huán)語(yǔ)法詳解

    java 增強(qiáng)型for循環(huán)語(yǔ)法詳解

    增強(qiáng)型 for 循環(huán)(也稱為 “for-each” 循環(huán))是 Java 從 JDK 5 開始引入的一種便捷循環(huán)語(yǔ)法,旨在簡(jiǎn)化對(duì)數(shù)組或集合類的迭代操作,這篇文章主要介紹了java 增強(qiáng)型for循環(huán) 詳解,需要的朋友可以參考下
    2025-04-04
  • Java設(shè)置千分位分隔符的兩種方法

    Java設(shè)置千分位分隔符的兩種方法

    在 Java 中,有時(shí)候我們需要對(duì)數(shù)字進(jìn)行千分位分隔,以提升數(shù)字的可讀性,本文將介紹如何在 Java 中實(shí)現(xiàn)對(duì)數(shù)字設(shè)置千分位分隔符的方法,需要的朋友可以參考下
    2024-10-10
  • Spring Security基本架構(gòu)與初始化操作流程詳解

    Spring Security基本架構(gòu)與初始化操作流程詳解

    這篇文章主要介紹了Spring Security基本架構(gòu)與初始化操作流程,Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架
    2023-03-03
  • java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解

    java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解

    這篇文章主要介紹了java 較大數(shù)據(jù)量取差集,list.removeAll性能優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java并發(fā)之搞懂讀寫鎖

    Java并發(fā)之搞懂讀寫鎖

    這篇文章主要介紹了Java并發(fā)之讀寫鎖,文中相關(guān)實(shí)例代碼詳細(xì),測(cè)試可用,具有一定參考價(jià)值,需要的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • 詳解如何用Java實(shí)現(xiàn)對(duì)m3u8直播流抽幀

    詳解如何用Java實(shí)現(xiàn)對(duì)m3u8直播流抽幀

    抽幀(frame extraction)是指從視頻流中提取一些特定的幀,通常是關(guān)鍵幀或者隨機(jī)幀,以供后續(xù)處理。這篇文章主要為大家介紹了如何用Java實(shí)現(xiàn)對(duì)m3u8直播流抽幀,需要的可以參考一下
    2023-03-03
  • java 排序算法之歸并排序

    java 排序算法之歸并排序

    本文主要講解了排序算法中的歸并排序,文中運(yùn)用大量的圖片和代碼講解的非常詳細(xì),感興趣的朋友可以學(xué)習(xí)一下這篇文章,相信可以幫助到你
    2021-09-09
  • 淺談Java 類中各成分加載順序和內(nèi)存中的存放位置

    淺談Java 類中各成分加載順序和內(nèi)存中的存放位置

    下面小編就為大家?guī)?lái)一篇淺談Java 類中各成分加載順序和內(nèi)存中的存放位置。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Java實(shí)現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件

    Java實(shí)現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)發(fā)送HTML內(nèi)容并帶附件的電子郵件,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2025-01-01

最新評(píng)論

中方县| 上饶市| 依安县| 静海县| 同心县| 云安县| 泰顺县| 柘荣县| 古蔺县| 平湖市| 五台县| 铜山县| 茂名市| 朔州市| 西宁市| 越西县| 岳池县| 东辽县| 庆元县| 黎城县| 梁平县| 蓬安县| 响水县| 泰来县| 子洲县| 商城县| 曲沃县| 武城县| 昌邑市| 漠河县| 丹寨县| 甘孜县| 专栏| 沅陵县| 凌海市| 精河县| 江津市| 红安县| 门源| 临武县| 砀山县|