SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)
在日常的開發(fā)中,一般都會(huì)分好幾種環(huán)境,比如通常的
- 開發(fā)環(huán)境:一般在開發(fā)的過程中,一個(gè)比較隨意地環(huán)境,通??梢噪S意重啟,刪除數(shù)據(jù) ;
- 測(cè)試環(huán)境:面向測(cè)試同學(xué)的環(huán)境,需要相對(duì)穩(wěn)定,完整,基本模擬線上的環(huán)境,但是可操作。
- 生產(chǎn)環(huán)境:也就是線上環(huán)境,基本沒有什么大的問題不會(huì)操作的環(huán)境,是重中之重。
在三個(gè)環(huán)境都需要部署,怎么樣保證多個(gè)環(huán)境的配置正確,開發(fā)方便,部署方便,這篇總結(jié)下
profile 的使用
profile 為在不同環(huán)境下使用不同的配置提供了支持,我們可以通過激活、指定參數(shù)等方式快速切換環(huán)境。多 Profile 文件方式 Spring Boot 的配置文件共有兩種形式:.properties 文件和 .yml 文件,不管哪種形式,它們都能通過文件名的命名形式區(qū)分出不同的環(huán)境的配置,
文件命名格式為:application-{profile}.properties/yml
其中,{profile} 一般為各個(gè)環(huán)境的名稱或簡(jiǎn)稱,
例如 dev、test 和 prod 等等。當(dāng)然也可以使用自定義的一些名字。
個(gè)人比較習(xí)慣yml的配置,更方便閱讀,結(jié)構(gòu)明確。
激活 profile 的方式
命令行啟動(dòng)
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
idea 中配置
idea 中編輯啟動(dòng)參數(shù),添加 vm 選項(xiàng)-Dspring.profiles.active=test注:這種方式和上面一樣
配置文件中激活
創(chuàng)建 3 個(gè)配置文件,通過主配置文件激活環(huán)境(不靈活)
application.yml application-dev.yml application-test.yml
application.yml .主配置文件可以向下面這樣寫。
spring: profiles: active: dev
開發(fā)中最靈活的多環(huán)境配置
創(chuàng)建四個(gè)配置
application.yml application-dev.yml application-test.yml application-prod.yml
主配置文件
application.yml #主配置文件
spring: profiles: active: ${ENV:dev}
注意:這里加了一個(gè)環(huán)境變量 ENV,在啟動(dòng)的時(shí)候進(jìn)行注入,如果不寫,默認(rèn)啟動(dòng) dev 環(huán)境
其他幾個(gè)環(huán)境配置
application-dev.yml #開發(fā)環(huán)境的配置
server: port: 8091
application-test.yml #測(cè)試環(huán)境的配置
server: port: 8092
application-prod.yml #生產(chǎn)環(huán)境的配置
server: port: ${PORT:8093}
注:這三個(gè)環(huán)境配置,只在其中的 prod 環(huán)境使用了環(huán)境變量application-xxx.yml。 在后續(xù)使用prod的時(shí)候可以根據(jù)環(huán)境設(shè)置環(huán)境變量賦值配置。
相同的配置會(huì)覆蓋 application.yml的配置
使用方式
1.在開發(fā)環(huán)境,可以寫死測(cè)試環(huán)境,開發(fā)環(huán)境的配置,避免在開發(fā)傳環(huán)境變量,激活什么的
2.在生產(chǎn)環(huán)境,可以通過環(huán)境變量 ENV=prod 激活生產(chǎn)環(huán)境的變量配置, idea 傳遞環(huán)境變量如下圖
3.docker 環(huán)境啟動(dòng)時(shí)候通過 env 設(shè)置環(huán)境變量docker run -itd --env ENV=prod test.jar
4.docker-compose
配置文件拆分
配置文件支持將將配置進(jìn)行拆分到不同的配置文件 如果多個(gè)環(huán)境擁有相同的配置,有兩種解決辦法
提取到application.yml
分離一個(gè)新的application-default_handler.yml
第一種情況可以針對(duì) springboot 的一些通用配置
第二種適合一些業(yè)務(wù)的配置相關(guān),比如項(xiàng)目中有一些自定義的配置,在三個(gè)環(huán)境都適合,就可以分離開
spring: profiles: active: ${ENV:dev} include: default_handler
只要 application-default_handler.yml 符合 yaml 的格式,項(xiàng)目中一樣可以加載到
總結(jié)
- 靈活使用環(huán)境變量啟用不同的 profile
- 靈活使用 spring.profiles.include 激活多個(gè)配置
- 最后 application.properties 和 application.yml 是一樣的使用方法
- 如果你使用 nacos 也可以實(shí)現(xiàn)同樣的效果,但是需要引入中間件,不推薦
到此這篇關(guān)于SpringBoot多環(huán)境切換的配置實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-plus @DS實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源原理
本文主要介紹了mybatis-plus @DS實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Spring boot中filter類不能注入@Autowired變量問題
這篇文章主要介紹了Spring boot中filter類不能注入@Autowired變量問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09【IntelliJ IDEA】Maven構(gòu)建自己的第一個(gè)Java后臺(tái)的方法
本篇文章主要介紹了Maven構(gòu)建自己的第一個(gè)Java后臺(tái)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12java實(shí)現(xiàn)http的Post、Get、代理訪問請(qǐng)求
這篇文章主要為大家提供了java實(shí)現(xiàn)http的Post、Get、代理訪問請(qǐng)求的相關(guān)代碼,感興趣的小伙伴們可以參考一下2016-01-01兩萬字詳解Java Sring String的常見操作以及StringBuffer StringBuilder的區(qū)別
本篇文章帶你認(rèn)識(shí)Sring、String的常見操作和StringBuffer 與StringBuilder的區(qū)別(字符串詳解),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Spring gateway配置Spring Security實(shí)現(xiàn)統(tǒng)一權(quán)限驗(yàn)證與授權(quán)示例源碼
這篇文章主要介紹了Spring gateway配置Spring Security實(shí)現(xiàn)統(tǒng)一權(quán)限驗(yàn)證與授權(quán),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)
這篇文章主要介紹了 微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)的相關(guān)資料,需要的朋友可以參考下2017-03-03