一文掌握SpringBoot多環(huán)境配置
寫在前面
在實(shí)際項(xiàng)目的開發(fā)過程中,我們程序往往需要在不同環(huán)境中運(yùn)行。例如:開發(fā)環(huán)境、測試環(huán)境和生產(chǎn)環(huán)境。
每個(gè)環(huán)境中的配置參數(shù)可能都會(huì)有所不同,例如數(shù)據(jù)庫連接信息、文件服務(wù)器等等。
Spring Boot 提供了非常方便的方式來管理這些不同環(huán)境的配置。
一、Spring Profile 介紹
Spring Profile
是 Spring
框架用于處理不同環(huán)境配置的解決方案。
Profile
可以幫助我們在不改變應(yīng)用代碼的情況下,根據(jù)當(dāng)前環(huán)境動(dòng)態(tài)地激活或者切換不同的配置。
Spring Boot
為每個(gè) Profile
提供了一個(gè)獨(dú)立的 application.properties
(或 application.yml
)配置文件。
默認(rèn)情況下,Spring Boot
使用的是 application.properties
文件。
當(dāng)你激活一個(gè)特定的 Profile
時(shí),Spring Boot
會(huì)查找名為 application-{profile}.properties
的文件,并把其中的屬性加載到 Spring Environment
中。
二、Properties與YAML
Spring Boot
支持使用Properties
和YAML
兩種配置方式。
兩者功能類似,都能完成Spring Boot
的配置,但是Properties
的優(yōu)先級要高于YMAL
2.1 Properties
Spring Boot
默認(rèn)的配置文件格式- 以“.”為分割的key=value鍵值對,例如,指定端口為8080 配置如下
server.port=8080
不支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),只支持字符串類型的鍵值對。因此,它的使用適用于簡單的配置場景
2.2YAML
采用樹狀結(jié)構(gòu),一目了然
server:
port: 8080
- 在key后的冒號一定要跟一個(gè)空格,如“port: 8080”
YAML
格式文件不支持注解@PropertySource
導(dǎo)入配置- 支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如列表和鍵值對,因此,
YAML
的使用適用于需要表示復(fù)雜數(shù)據(jù)結(jié)構(gòu)的場合
2.3 如何選擇
- 在
Spring Boot
應(yīng)用中,你可以根據(jù)自己的實(shí)際需求,選擇使用YAML
還是Properties
格式的配置文件。 - 如果你的配置比較簡單,
Properties
格式可能會(huì)更好些。 - 如果你的配置比較復(fù)雜,或者你希望配置文件更具可讀性,那么
YAML
格式可能是更好的選擇
三、創(chuàng)建配置文件
3.1 創(chuàng)建配置文件
在實(shí)際項(xiàng)目開發(fā)中,我們一般有三個(gè)環(huán)境:開發(fā)(dev
)、測試(test
)、生產(chǎn)(prod
)。我們需要建立如下幾個(gè)配置文件
application.yml
或者application.properties
用于存放所有環(huán)境通用的配置application-dev.yml
或者application-dev.properties
存放開發(fā)環(huán)境的特殊配置application-test.yml
或者application-test.properties
存放測試環(huán)境的特殊配置application-prod.yml
或者application-prod.properties
存放生產(chǎn)環(huán)境的特殊配置
3.2 配置文件內(nèi)容
①配置開發(fā)環(huán)境
application-dev.yml
server: port: 8080 tomcat: uri-encoding: UTF-8 environment: name: 開發(fā)環(huán)境
application-dev.properties
server.port=8080 server.tomcat.uri-encoding=UTF-8 environment.name=開發(fā)環(huán)境
②配置生產(chǎn)環(huán)境
application-prod.yml
server: port: 8090 tomcat: uri-encoding: UTF-8 environment: name: 生產(chǎn)環(huán)境
application-prod.properties
server.port=8090 server.tomcat.uri-encoding=UTF-8 environment.name=生產(chǎn)環(huán)境
application-test.yml
和application-test.properties
配置文件類似,由于篇幅原因,這里就不一一例舉了
四、激活 Profile
在上一小節(jié)中,我們創(chuàng)建了三個(gè)配置文件即配置了三種環(huán)境,那么我們怎么才能激活對應(yīng)環(huán)境呢
4.1 配置文件激活
其實(shí)很多簡單,我們只需要在application.yml
或者application.properties
添加如下配置即可,即可激活開發(fā)環(huán)境
①application.yml
# application.yml spring profiles: active: dev
②application.properties
spring.profiles.active=dev
4.2 啟動(dòng)參數(shù)激活
在命令行中設(shè)置 spring.profiles.active
系統(tǒng)屬性。
例如,你可以使用以下命令來啟動(dòng)你的應(yīng)用,并激活 "prod" 環(huán)境:
# 企業(yè)級項(xiàng)目開發(fā)中,針對生產(chǎn)環(huán)境,一般通過啟動(dòng)命令再指定激活生產(chǎn) 環(huán)境 java -jar $APP_NAME --spring.profiles.active=prod
4.3 環(huán)境變量激活
我們還可以通過配置服務(wù)器系統(tǒng)環(huán)境變量來激活環(huán)境,在環(huán)境變量中設(shè)置SPRING_PROFILES_ACTIVE
即可,不過這種方式不常用,了解即可
五、測試是否生效
上一小節(jié)中,我們通過配置激活了開發(fā)環(huán)境,我們就來實(shí)際驗(yàn)證以下是否生效。
出現(xiàn)下圖紅框表示部分,說明我們激活了dev
開發(fā)環(huán)境
到此這篇關(guān)于SpringBoot多環(huán)境配置的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot如何通過@Profile注解配置多環(huán)境
- Java springboot 配置文件與多環(huán)境配置與運(yùn)行優(yōu)先級
- SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法
- springboot yml中profiles的巧妙用法(小白必看多環(huán)境配置)
- springboot多模塊多環(huán)境配置文件問題(動(dòng)態(tài)配置生產(chǎn)和開發(fā)環(huán)境)
- springboot 多環(huán)境配置 yml文件版的實(shí)現(xiàn)方法
- springboot多環(huán)境配置方案(不用5分鐘)
- springboot多環(huán)境(dev、test、prod)配置詳解
- springboot 多環(huán)境配置教程
相關(guān)文章
SpringBoot構(gòu)建RESTful API的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot構(gòu)建RESTful API的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Java中List排序的三種實(shí)現(xiàn)方法實(shí)例
其實(shí)Java針對數(shù)組和List的排序都有實(shí)現(xiàn),對數(shù)組而言你可以直接使用Arrays.sort,對于List和Vector而言,你可以使用Collections.sort方法,下面這篇文章主要給大家介紹了關(guān)于Java中List排序的三種實(shí)現(xiàn)方法,需要的朋友可以參考下2021-12-12Spring Boot Admin微服務(wù)應(yīng)用監(jiān)控的實(shí)現(xiàn)
這篇文章主要介紹了Spring Boot Admin微服務(wù)應(yīng)用監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Java中InputSteam怎么轉(zhuǎn)String
面了一位實(shí)習(xí)生,叫他給我說一下怎么把InputStream轉(zhuǎn)換為String,這種常規(guī)的操作,他竟然都沒有用過我準(zhǔn)備結(jié)合工作經(jīng)驗(yàn),整理匯集出了InputStream 到String 轉(zhuǎn)換的十八般武藝,助大家闖蕩 Java 江湖一臂之力,需要的朋友可以參考下2021-06-06淺談Java中replace與replaceAll區(qū)別
這篇文章主要介紹了Java中replace與replaceAll區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java報(bào)錯(cuò):“錯(cuò)誤:編碼GBK?的不可映射字符”解決辦法
當(dāng)Java源代碼中包含中文字符時(shí),我們在用javac編譯時(shí)會(huì)出現(xiàn)“錯(cuò)誤:編碼GBK的不可映射字符”,這篇文章主要給大家介紹了關(guān)于java報(bào)錯(cuò):“錯(cuò)誤:編碼GBK?的不可映射字符”的解決辦法,需要的朋友可以參考下2024-08-08