springboot導(dǎo)入多個(gè)配置文件的方法實(shí)踐
1、簡(jiǎn)介
Spring Boot從2.4.x版本開始支持了導(dǎo)入文件的方式來(lái)加載配置參數(shù),與spring.config.additional-location不同的是不用提前設(shè)置而且支持導(dǎo)入的文件類型相對(duì)來(lái)說(shuō)要豐富很多。
我們只需要在application.properties/application.yml配置文件中通過(guò)spring.config.import屬性配置需要導(dǎo)入的文件列表即可。
通過(guò)spring.config.import屬性支持導(dǎo)入多種途徑的配置文件,下面簡(jiǎn)單介紹幾種。
2、導(dǎo)入方式
classpath
使用classpath:
前綴來(lái)指定位于類路徑(classpath)中的配置文件。這通常用于引用項(xiàng)目?jī)?nèi)部的資源,如src/main/resources
目錄下的文件。
spring: config: import: classpath:custom-config.yml
file
使用file:
前綴來(lái)指定文件系統(tǒng)中的配置文件。這允許你引用位于項(xiàng)目外部的配置文件。
spring: config: import: file:/path/to/external-config.yml
optional
使用optional:
前綴可以指定一個(gè)配置文件,如果該文件不存在,不會(huì)拋出錯(cuò)誤,應(yīng)用程序會(huì)繼續(xù)啟動(dòng)。這在引用可選配置時(shí)非常有用。
spring: config: import: optional:classpath:optional-config.yml
nacos
如果你使用Nacos作為配置中心,可以使用nacos:
前綴來(lái)導(dǎo)入Nacos中的配置文件。
spring: cloud: nacos: config: import: nacos:data-id:group-id
通配符導(dǎo)入
你可以使用通配符(如*
)來(lái)導(dǎo)入一個(gè)目錄下的所有配置文件。這在有多個(gè)配置文件需要被一起加載時(shí)非常有用。
spring: config: import: classpath:config-templates/*.yml
無(wú)擴(kuò)展名文件
如果你需要導(dǎo)入沒有擴(kuò)展名的文件,可以在文件名后添加方括號(hào),例如classpath:additional-application[.yml]
。
spring: config: import: classpath:additional-application[.yml]
目錄導(dǎo)入
你可以導(dǎo)入整個(gè)目錄下的配置文件,Spring Boot會(huì)自動(dòng)加載目錄下的所有.properties
和.yml
文件。
spring: config: import: classpath:config-import-dir/
特定環(huán)境配置文件
雖然不是spring.config.import
的直接選項(xiàng),但你可以創(chuàng)建特定于環(huán)境的配置文件(如application-dev.yml
),并通過(guò)激活相應(yīng)的profile來(lái)加載它們。
java -jar myapp.jar --spring.profiles.active=dev
命令行參數(shù)
雖然不是在application.yml
或application.properties
中設(shè)置,但你可以在啟動(dòng)應(yīng)用程序時(shí)通過(guò)命令行參數(shù)來(lái)導(dǎo)入配置文件。
java -jar myapp.jar --spring.config.import=classpath:another-config.yml
這些選項(xiàng)提供了靈活的方式來(lái)組織和管理你的配置文件,使得你可以根據(jù)不同的環(huán)境和需求來(lái)調(diào)整應(yīng)用程序的配置。
3、示例代碼
application.yml
server: port: 8080 spring: application: name: spring-config-multiple-demo config: import: - classpath:application-test.yml - classpath:application-learn.yml - classpath:application-user-list.yml
application-learn.yml
learn: cond: enabled: false
application-test.yml
test: app: id: 123 name: "張三"
application-user-list.yml
com: user: user-list: - name: "張三" id: 1 - name: "李四" id: 2 person-list: - name: "王五" id: 3 - name: "趙六" id: 4
到此這篇關(guān)于springboot導(dǎo)入多個(gè)配置文件的方法實(shí)踐的文章就介紹到這了,更多相關(guān)springboot導(dǎo)入多配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java web開發(fā)之購(gòu)物車功能實(shí)現(xiàn)示例代碼
這篇文章主要介紹了java web開發(fā)之購(gòu)物車功能實(shí)現(xiàn)示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10springboot跨域訪問(wèn)cros與@CrossOrigin注解詳析
這篇文章主要給大家介紹了關(guān)于springboot跨域訪問(wèn)cros與@CrossOrigin注解的相關(guān)資料,跨域是指不同域名之間相互訪問(wèn),它是瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript施加的安全限制,需要的朋友可以參考下2023-12-12Java集合基礎(chǔ)知識(shí) List/Set/Map詳解
這篇文章主要介紹了Java集合基礎(chǔ)知識(shí) List/Set/Map,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種)
這篇文章主要介紹了SpringBoot下使用定時(shí)任務(wù)的方式全揭秘(6種),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Logger.getLogger()與LogFactory.getLog()的區(qū)別詳解
LogFactory來(lái)自common-logging包。如果用LogFactory.getLog,你可以用任何實(shí)現(xiàn)了通用日志接口的日志記錄器替換log4j,而程序不受影響2013-09-09如何利用Map與函數(shù)式接口來(lái)實(shí)現(xiàn)去除if else
這篇文章主要介紹了如何利用Map與函數(shù)式接口來(lái)實(shí)現(xiàn)去除if else問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java 獲取服務(wù)器環(huán)境的實(shí)例詳解
這篇文章主要介紹了Java 獲取服務(wù)器環(huán)境的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例和輸出結(jié)果,希望能幫助大家理解,需要的朋友可以參考下2017-07-07在Java中動(dòng)態(tài)執(zhí)行字符串代碼的方法小結(jié)
在Java編程中,靜態(tài)編譯的特性通常不允許我們直接執(zhí)行運(yùn)行時(shí)生成的代碼,然而,有時(shí)我們需要?jiǎng)討B(tài)地生成并執(zhí)行代碼片段,本文將詳細(xì)介紹如何在Java中運(yùn)行一段字符串代碼,并提供詳細(xì)的代碼案例和運(yùn)行結(jié)果,需要的朋友可以參考下2024-08-08