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ā)的配置都不相同,接下來對不同類型的配置文件進行說明
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: dev
1.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
大家進行測試后就會發(fā)現(xiàn)命令行設(shè)置的端口號優(yōu)先級高(也就是使用的是命令行設(shè)置的端口號),配置的優(yōu)先級其實 SpringBoot
官網(wǎng)已經(jīng)進行了說明,參見 :
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
進入上面網(wǎng)站后會看到如下頁面
如果使用了多種方式配合同一個配置項,優(yōu)先級高的生效。
二、配置文件分類
有這樣的場景,我們開發(fā)完畢后需要測試人員進行測試,由于測試環(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)文章
spring boot集成shiro詳細教程(小結(jié))
這篇文章主要介紹了spring boot 集成shiro詳細教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01spring cloud config 配置中心快速實現(xiàn)過程解析
這篇文章主要介紹了spring cloud config 配置中心快速實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08詳解SpringBoot中的index首頁的訪問、自定義Favicon圖標(biāo)
這篇文章主要介紹了SpringBoot中的index首頁的訪問、自定義Favicon圖標(biāo),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08Spring boot @RequestBody數(shù)據(jù)傳遞過程詳解
這篇文章主要介紹了Spring boot @RequestBody數(shù)據(jù)傳遞過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12Java實現(xiàn)添加、驗證PDF數(shù)字簽名的方法示例
在設(shè)置文檔內(nèi)容保護的方法中,除了對文檔加密、添加水印外,應(yīng)用數(shù)字簽名也是一種有效防偽手段。本文就使用Java實現(xiàn)添加、驗證PDF數(shù)字簽名,感興趣的可以了解一下2021-07-07SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細講解
有時候參數(shù)的傳遞還需要更多的參數(shù),比如一個獲取用戶信息的請求中既有用戶ID等基本參數(shù),還要求對查詢結(jié)果進行分頁,針對這種場景,一般都會將分頁參數(shù)封裝成一個對象,然后將它和基本參數(shù)一起傳給控制器2023-02-02Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對象(推薦)
Gson庫是一個功能強大、易于使用的Java序列化/反序列化庫,它提供了豐富的API來支持Java對象和JSON之間的轉(zhuǎn)換,這篇文章主要介紹了Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對象,需要的朋友可以參考下2024-07-07