SpringBoot多環(huán)境配置及配置文件分類實(shí)例詳解
一、多環(huán)境配置
在工作中,對(duì)于開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境的配置肯定都不相同,比如我們開(kāi)發(fā)階段會(huì)在自己的電腦上安裝 mysql
,連接自己電腦上的 mysql
即可,但是項(xiàng)目開(kāi)發(fā)完畢后要上線就需要該配置,將環(huán)境的配置改為線上環(huán)境的。
來(lái)回的修改配置會(huì)很麻煩,而 SpringBoot
給開(kāi)發(fā)者提供了多環(huán)境的快捷配置,需要切換環(huán)境時(shí)只需要改一個(gè)配置即可。不同類型的配置文件多環(huán)境開(kāi)發(fā)的配置都不相同,接下來(lái)對(duì)不同類型的配置文件進(jìn)行說(shuō)明
1.1 yaml文件
在 application.yml
中使用 ---
來(lái)分割不同的配置,內(nèi)容如下
#開(kāi)發(fā) spring: profiles: dev #給開(kāi)發(fā)環(huán)境起的名字 server: port: 80 --- #生產(chǎn) spring: profiles: pro #給生產(chǎn)環(huán)境起的名字 server: port: 81 --- #測(cè)試 spring: profiles: test #給測(cè)試環(huán)境起的名字 server: port: 82 ---
上面配置中 spring.profiles
是用來(lái)給不同的配置起名字的。而如何告知 SpringBoot
使用哪段配置呢?可以使用如下配置來(lái)啟用都一段配置
#設(shè)置啟用的環(huán)境 spring: profiles: active: dev #表示使用的是開(kāi)發(fā)環(huán)境的配置
綜上所述,application.yml
配置文件內(nèi)容如下
#設(shè)置啟用的環(huán)境 spring: profiles: active: dev ? --- #開(kāi)發(fā) spring: profiles: dev server: port: 80 --- #生產(chǎn) spring: profiles: pro server: port: 81 --- #測(cè)試 spring: profiles: test server: port: 82 ---
注意:在上面配置中給不同配置起名字的 spring.profiles
配置項(xiàng)已經(jīng)過(guò)時(shí)。最新用來(lái)起名字的配置項(xiàng)是
#開(kāi)發(fā) spring: config: activate: on-profile: dev
1.2 properties文件
properties
類型的配置文件配置多環(huán)境需要定義不同的配置文件
application-dev.properties
文件是開(kāi)發(fā)環(huán)境的配置文件。我們?cè)谠撐募信渲枚丝谔?hào)為80
server.port=80
application-test.properties
文件是測(cè)試環(huán)境的配置文件。我們?cè)谠撐募信渲枚丝谔?hào)為81
server.port=81
application-pro.properties
文件是生產(chǎn)環(huán)境的配置文件。我們?cè)谠撐募信渲枚丝谔?hào)為82
server.port=82
SpringBoot
只會(huì)默認(rèn)加載名為application.properties
的配置文件,所以需要在application.properties
配置文件中設(shè)置啟用哪個(gè)配置文件,配置如下:
spring.profiles.active=pro
1.3 命令行啟動(dòng)參數(shù)設(shè)置
使用 SpringBoot
開(kāi)發(fā)的程序以后都是打成 jar
包,通過(guò) java -jar xxx.jar
的方式啟動(dòng)服務(wù)的。那么就存在一個(gè)問(wèn)題,如何切換環(huán)境呢?因?yàn)榕渲梦募虻降膉ar包中了。
我們知道 jar
包其實(shí)就是一個(gè)壓縮包,可以解壓縮,然后修改配置,最后再打成jar包就可以了。這種方式顯然有點(diǎn)麻煩,而 SpringBoot
提供了在運(yùn)行 jar
時(shí)設(shè)置開(kāi)啟指定的環(huán)境的方式,如下
java –jar xxx.jar –-spring.profiles.active=test
那么這種方式能不能臨時(shí)修改端口號(hào)呢?也是可以的,可以通過(guò)如下方式
java –jar xxx.jar –-server.port=88
當(dāng)然也可以同時(shí)設(shè)置多個(gè)配置,比如即指定啟用哪個(gè)環(huán)境配置,又臨時(shí)指定端口,如下
java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
大家進(jìn)行測(cè)試后就會(huì)發(fā)現(xiàn)命令行設(shè)置的端口號(hào)優(yōu)先級(jí)高(也就是使用的是命令行設(shè)置的端口號(hào)),配置的優(yōu)先級(jí)其實(shí) SpringBoot
官網(wǎng)已經(jīng)進(jìn)行了說(shuō)明,參見(jiàn) :
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
進(jìn)入上面網(wǎng)站后會(huì)看到如下頁(yè)面
如果使用了多種方式配合同一個(gè)配置項(xiàng),優(yōu)先級(jí)高的生效。
二、配置文件分類
有這樣的場(chǎng)景,我們開(kāi)發(fā)完畢后需要測(cè)試人員進(jìn)行測(cè)試,由于測(cè)試環(huán)境和開(kāi)發(fā)環(huán)境的很多配置都不相同,所以測(cè)試人員在運(yùn)行我們的工程時(shí)需要臨時(shí)修改很多配置,如下
java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……
針對(duì)這種情況,SpringBoot
定義了配置文件不同的放置的位置;而放在不同位置的優(yōu)先級(jí)時(shí)不同的。
SpringBoot
中4級(jí)配置文件放置位置:
1級(jí):resources/application.yml
2級(jí):resources/config/application.yml
3級(jí):target/application.yml
- 4級(jí):target/config/application.yml
說(shuō)明:級(jí)別越高優(yōu)先級(jí)越高
3級(jí)與4級(jí)留作系統(tǒng)打包后設(shè)置通用屬性
1級(jí)與2級(jí)用于系統(tǒng)開(kāi)發(fā)階段設(shè)置通用屬性
2.1 代碼演示
2.1.1 環(huán)境準(zhǔn)備
創(chuàng)建一個(gè)名為 springboot_06_config_file
的 SpringBoot
工程,,參考SpringBoot快速入門(mén)及起步依賴解析,目錄結(jié)構(gòu)如下
在 resources
下創(chuàng)建一個(gè)名為 config
的目錄,在該目錄中創(chuàng)建 application.yml
配置文件,而在該配置文件中將端口號(hào)設(shè)置為 81
,內(nèi)容如下
server: port: 81
而在 resources
下創(chuàng)建的 application.yml
配置文件中并將端口號(hào)設(shè)置為 80
,內(nèi)容如下
server: port: 80
2.1.2 驗(yàn)證1級(jí)和2級(jí)的優(yōu)先級(jí)
運(yùn)行啟動(dòng)引導(dǎo)類,可以在控制臺(tái)看到如下日志信息
通過(guò)這個(gè)結(jié)果可以得出類路徑下的 config
下的配置文件優(yōu)先于類路徑下的配置文件。
2.1.3 驗(yàn)證2級(jí)和4級(jí)的優(yōu)先級(jí)
要驗(yàn)證4級(jí),按照以下步驟完成
將工程打成 jar
包
點(diǎn)擊工程的 package
來(lái)打 jar
包
在硬盤(pán)上找到 jar
包所在位置
在
jar
包所在位置創(chuàng)建config
文件夾,在該文件夾下創(chuàng)建application.yml
配置文件,而在該配合文件中將端口號(hào)設(shè)置為82
在命令行使用以下命令運(yùn)行程序
java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar
運(yùn)行后日志信息如下
通過(guò)這個(gè)結(jié)果可以得出file: config
下的配置文件優(yōu)先于類路徑下的配置文件。
注意:
SpringBoot 2.5.0版本存在一個(gè)bug,我們?cè)谑褂眠@個(gè)版本時(shí),需要在 jar
所在位置的 config
目錄下創(chuàng)建一個(gè)任意名稱的文件夾
到此這篇關(guān)于SpringBoot多環(huán)境配置及配置文件分類的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring boot集成shiro詳細(xì)教程(小結(jié))
這篇文章主要介紹了spring boot 集成shiro詳細(xì)教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08詳解SpringBoot中的index首頁(yè)的訪問(wèn)、自定義Favicon圖標(biāo)
這篇文章主要介紹了SpringBoot中的index首頁(yè)的訪問(wèn)、自定義Favicon圖標(biāo),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08Spring boot @RequestBody數(shù)據(jù)傳遞過(guò)程詳解
這篇文章主要介紹了Spring boot @RequestBody數(shù)據(jù)傳遞過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java實(shí)現(xiàn)添加、驗(yàn)證PDF數(shù)字簽名的方法示例
在設(shè)置文檔內(nèi)容保護(hù)的方法中,除了對(duì)文檔加密、添加水印外,應(yīng)用數(shù)字簽名也是一種有效防偽手段。本文就使用Java實(shí)現(xiàn)添加、驗(yàn)證PDF數(shù)字簽名,感興趣的可以了解一下2021-07-07SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細(xì)講解
有時(shí)候參數(shù)的傳遞還需要更多的參數(shù),比如一個(gè)獲取用戶信息的請(qǐng)求中既有用戶ID等基本參數(shù),還要求對(duì)查詢結(jié)果進(jìn)行分頁(yè),針對(duì)這種場(chǎng)景,一般都會(huì)將分頁(yè)參數(shù)封裝成一個(gè)對(duì)象,然后將它和基本參數(shù)一起傳給控制器2023-02-02Java 中Json中既有對(duì)象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對(duì)象(推薦)
Gson庫(kù)是一個(gè)功能強(qiáng)大、易于使用的Java序列化/反序列化庫(kù),它提供了豐富的API來(lái)支持Java對(duì)象和JSON之間的轉(zhuǎn)換,這篇文章主要介紹了Java 中Json中既有對(duì)象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對(duì)象,需要的朋友可以參考下2024-07-07