SpringBoot多環(huán)境配置及配置文件分類實例詳解
一、多環(huán)境配置
在工作中,對于開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境的配置肯定都不相同,比如我們開發(fā)階段會在自己的電腦上安裝 mysql ,連接自己電腦上的 mysql 即可,但是項目開發(fā)完畢后要上線就需要該配置,將環(huán)境的配置改為線上環(huán)境的。

來回的修改配置會很麻煩,而 SpringBoot 給開發(fā)者提供了多環(huán)境的快捷配置,需要切換環(huán)境時只需要改一個配置即可。不同類型的配置文件多環(huán)境開發(fā)的配置都不相同,接下來對不同類型的配置文件進(jìn)行說明
1.1 yaml文件
在 application.yml 中使用 --- 來分割不同的配置,內(nèi)容如下
#開發(fā) spring: profiles: dev #給開發(fā)環(huán)境起的名字 server: port: 80 --- #生產(chǎn) spring: profiles: pro #給生產(chǎn)環(huán)境起的名字 server: port: 81 --- #測試 spring: profiles: test #給測試環(huán)境起的名字 server: port: 82 ---
上面配置中 spring.profiles 是用來給不同的配置起名字的。而如何告知 SpringBoot 使用哪段配置呢?可以使用如下配置來啟用都一段配置
#設(shè)置啟用的環(huán)境
spring:
profiles:
active: dev #表示使用的是開發(fā)環(huán)境的配置綜上所述,application.yml 配置文件內(nèi)容如下
#設(shè)置啟用的環(huán)境
spring:
profiles:
active: dev
?
---
#開發(fā)
spring:
profiles: dev
server:
port: 80
---
#生產(chǎn)
spring:
profiles: pro
server:
port: 81
---
#測試
spring:
profiles: test
server:
port: 82
---注意:在上面配置中給不同配置起名字的 spring.profiles 配置項已經(jīng)過時。最新用來起名字的配置項是
#開發(fā)
spring:
config:
activate:
on-profile: dev1.2 properties文件
properties 類型的配置文件配置多環(huán)境需要定義不同的配置文件
application-dev.properties文件是開發(fā)環(huán)境的配置文件。我們在該文件中配置端口號為80
server.port=80
application-test.properties文件是測試環(huán)境的配置文件。我們在該文件中配置端口號為81
server.port=81
application-pro.properties文件是生產(chǎn)環(huán)境的配置文件。我們在該文件中配置端口號為82
server.port=82
SpringBoot只會默認(rèn)加載名為application.properties的配置文件,所以需要在application.properties配置文件中設(shè)置啟用哪個配置文件,配置如下:
spring.profiles.active=pro
1.3 命令行啟動參數(shù)設(shè)置
使用 SpringBoot 開發(fā)的程序以后都是打成 jar 包,通過 java -jar xxx.jar 的方式啟動服務(wù)的。那么就存在一個問題,如何切換環(huán)境呢?因為配置文件打到的jar包中了。
我們知道 jar 包其實就是一個壓縮包,可以解壓縮,然后修改配置,最后再打成jar包就可以了。這種方式顯然有點麻煩,而 SpringBoot 提供了在運行 jar 時設(shè)置開啟指定的環(huán)境的方式,如下
java –jar xxx.jar –-spring.profiles.active=test
那么這種方式能不能臨時修改端口號呢?也是可以的,可以通過如下方式
java –jar xxx.jar –-server.port=88
當(dāng)然也可以同時設(shè)置多個配置,比如即指定啟用哪個環(huán)境配置,又臨時指定端口,如下
java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
大家進(jìn)行測試后就會發(fā)現(xiàn)命令行設(shè)置的端口號優(yōu)先級高(也就是使用的是命令行設(shè)置的端口號),配置的優(yōu)先級其實 SpringBoot 官網(wǎng)已經(jīng)進(jìn)行了說明,參見 :
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
進(jìn)入上面網(wǎng)站后會看到如下頁面

如果使用了多種方式配合同一個配置項,優(yōu)先級高的生效。
二、配置文件分類
有這樣的場景,我們開發(fā)完畢后需要測試人員進(jìn)行測試,由于測試環(huán)境和開發(fā)環(huán)境的很多配置都不相同,所以測試人員在運行我們的工程時需要臨時修改很多配置,如下
java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……
針對這種情況,SpringBoot 定義了配置文件不同的放置的位置;而放在不同位置的優(yōu)先級時不同的。
SpringBoot 中4級配置文件放置位置:
1級:resources/application.yml
2級:resources/config/application.yml
3級:target/application.yml
- 4級:target/config/application.yml
說明:級別越高優(yōu)先級越高
3級與4級留作系統(tǒng)打包后設(shè)置通用屬性
1級與2級用于系統(tǒng)開發(fā)階段設(shè)置通用屬性
2.1 代碼演示
2.1.1 環(huán)境準(zhǔn)備
創(chuàng)建一個名為 springboot_06_config_file 的 SpringBoot 工程,,參考SpringBoot快速入門及起步依賴解析,目錄結(jié)構(gòu)如下

在 resources 下創(chuàng)建一個名為 config 的目錄,在該目錄中創(chuàng)建 application.yml 配置文件,而在該配置文件中將端口號設(shè)置為 81,內(nèi)容如下
server: port: 81
而在 resources 下創(chuàng)建的 application.yml 配置文件中并將端口號設(shè)置為 80,內(nèi)容如下
server: port: 80
2.1.2 驗證1級和2級的優(yōu)先級
運行啟動引導(dǎo)類,可以在控制臺看到如下日志信息

通過這個結(jié)果可以得出類路徑下的 config 下的配置文件優(yōu)先于類路徑下的配置文件。
2.1.3 驗證2級和4級的優(yōu)先級
要驗證4級,按照以下步驟完成
將工程打成 jar 包
點擊工程的 package 來打 jar 包

在硬盤上找到 jar 包所在位置

在
jar包所在位置創(chuàng)建config文件夾,在該文件夾下創(chuàng)建application.yml配置文件,而在該配合文件中將端口號設(shè)置為82
在命令行使用以下命令運行程序
java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar
運行后日志信息如下

通過這個結(jié)果可以得出file: config 下的配置文件優(yōu)先于類路徑下的配置文件。
注意:
SpringBoot 2.5.0版本存在一個bug,我們在使用這個版本時,需要在 jar 所在位置的 config 目錄下創(chuàng)建一個任意名稱的文件夾
到此這篇關(guān)于SpringBoot多環(huán)境配置及配置文件分類的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot 調(diào)度任務(wù)及常用任務(wù)表達(dá)式
這篇文章主要介紹了SpringBoot 調(diào)度任務(wù)及常用任務(wù)表達(dá)式,需要的朋友可以參考下2017-12-12
詳解Spring 兩種注入的方式(Set和構(gòu)造)實例
本篇文章主要介紹了Spring 兩種注入的方式(Set和構(gòu)造)實例,Spring框架主要提供了Set注入和構(gòu)造注入兩種依賴注入方式。有興趣的可以了解一下。2017-02-02
IDEA生成標(biāo)準(zhǔn)JavaBean的幾種方法總結(jié)
標(biāo)準(zhǔn)javaBean是定義一個類的標(biāo)準(zhǔn)結(jié)構(gòu),下面這篇文章主要給大家總結(jié)介紹了關(guān)于IDEA生成標(biāo)準(zhǔn)JavaBean的幾種方法,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
java的三種隨機(jī)數(shù)生成方式的實現(xiàn)方法
這篇文章主要介紹了java的三種隨機(jī)數(shù)生成方式的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

