SpringBoot多環(huán)境配置教程詳解
一、為什么要配置多環(huán)境
當(dāng)我們工作開(kāi)發(fā)真實(shí)的項(xiàng)目時(shí),可能會(huì)遇到不同的環(huán)境,如:開(kāi)發(fā)環(huán)境、生產(chǎn)環(huán)境、測(cè)試環(huán)境等,不同的環(huán)境所需要的配置內(nèi)容也會(huì)不盡相同,如果我們每次切換環(huán)境時(shí)再去配置對(duì)應(yīng)的環(huán)境配置,肯定會(huì)降低我們的開(kāi)發(fā)效率,所以,掌握多環(huán)境配置還是非常有必要的。
二、如何進(jìn)行多環(huán)境配置呢
我們還是以配置端口號(hào)為例,來(lái)演示如何進(jìn)行多環(huán)境配置問(wèn)題。
1、針對(duì) yaml 配置文件
# 設(shè)置啟用的環(huán)境
spring:
profiles:
active: dev
---
# 開(kāi)發(fā)環(huán)境
spring:
profiles: dev # 為開(kāi)發(fā)環(huán)境命名
server:
port: 80
---
# 生產(chǎn)環(huán)境
spring:
profiles: pro # 為生產(chǎn)環(huán)境命名
server:
port: 81
---
# 測(cè)試環(huán)境
spring:
profiles: test # 為測(cè)試環(huán)境命名
server:
port: 82- 不同的環(huán)境之間需要用 3 個(gè) “ - ” 號(hào)作為分割。
- 在需要使用哪個(gè)環(huán)境時(shí),就將 active 的屬性值聲明為那個(gè)環(huán)境的名字。
- 初始 port 端口號(hào),還可以在配置其他信息,在此我就不再一一贅述了。
2、針對(duì) properties 配置文件
使用 yaml 配置文件,一個(gè)文件就能夠完成多環(huán)境的配置工作,但是如果使用 properties 配置文件的話,需要使用多文件才能夠完成。
主配置文件 application.properties
# 設(shè)置啟用的環(huán)境 spring.profiles.active=dev
開(kāi)發(fā)環(huán)境 application-dev.properties
server.port=80
生產(chǎn)環(huán)境 application-pro.properties
server.port=81
測(cè)試環(huán)境 application-test.properties
server.port=82
- 有多少個(gè)環(huán)境,就需要定義多少個(gè)配置文件,在自己的配置文件中配置環(huán)境內(nèi)容。
- 在主配置文件中聲明使用哪個(gè)環(huán)境。
三、命令行啟動(dòng)參數(shù)
通常情況下,我們都會(huì)將做好的項(xiàng)目打包成 jar 包,那么,如果我們?cè)诿钚兄袌?zhí)行 jar 包的時(shí)候能夠完成切換環(huán)境的功能嗎?還是說(shuō),我們必須在到 IDEA 開(kāi)發(fā)工具中去配置文件中手動(dòng)改變當(dāng)前啟用的環(huán)境呢?答案當(dāng)然是否定的,我們可以通過(guò)命令行參數(shù)還完成環(huán)境的切換。
第一步:打包項(xiàng)目
打包工作在 【SpringBoot】快速入門(mén)一文中有詳細(xì)講解,感興趣的小伙伴可以移步查看。
選中 package 后運(yùn)行開(kāi)始打包。

完成到找到相應(yīng)的文件夾,執(zhí)行 cmd 命令。
第二步:輸入命令行
輸入命令:java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

通過(guò)分析端口號(hào)能夠發(fā)現(xiàn),已經(jīng)切換到了測(cè)試環(huán)境中。
命令最后多了 “ --spring.profiles.active=test ” 部分內(nèi)容,仔細(xì)觀察是否發(fā)現(xiàn),這和我們?cè)谂渲梦募袑?xiě)的配置啟用環(huán)境內(nèi)容是不是非常像呢?沒(méi)錯(cuò),就是按照它寫(xiě)的。
這就告訴我們,如果我們想使用命令行方式切換環(huán)境,可以使用上述方式進(jìn)行。
補(bǔ)充內(nèi)容
除了使用上述方式可以完成切換環(huán)境的操作外,如果我們還想使用一個(gè)我們從未定義過(guò)的端口號(hào)該怎么做呢?
輸入命令:java -jar demo-0.0.1-SNAPSHOT.jar --server.port=90

直接使用 “ server.port=90 ” 指定臨時(shí)端口號(hào),同樣能夠生效。
很多小伙伴不明白為什么要使用 “ server.port" 的方式指定,這是因?yàn)槲覀冊(cè)谂渲梦募芯褪鞘褂迷摲绞街付ǘ丝谔?hào)的,只是搬到了命令行參數(shù)上罷了。
當(dāng)同時(shí)指定 “ server.port = 90 ” 和 “ spring.profiles.active=test ” 時(shí),哪一個(gè)會(huì)起作用呢?我們不妨測(cè)試一下。

根據(jù)端口號(hào)可以得出 “ server.port = 90 ” 這個(gè)參數(shù)起作用了,說(shuō)明它的優(yōu)先級(jí)更高。
對(duì)于優(yōu)先級(jí)的內(nèi)容,可以參考官網(wǎng)。

當(dāng)配置多個(gè)時(shí),優(yōu)先級(jí)高的生效。
到此這篇關(guān)于SpringBoot多環(huán)境配置教程詳解的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java之Scanner.nextLine()讀取回車的問(wèn)題及解決
這篇文章主要介紹了Java之Scanner.nextLine()讀取回車的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式
出于安全和性能的考慮,我們希望服務(wù)器返回的圖片資源僅在指定網(wǎng)站內(nèi)展示,防止爬蟲(chóng)或其它站點(diǎn)直接引用圖片地址進(jìn)行下載或展示,進(jìn)而消耗服務(wù)器資源,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式,需要的朋友可以參考下2025-02-02
org.slf4j.Logger中info()方法的使用詳解
這篇文章主要介紹了org.slf4j.Logger中info()方法的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解Java編程中if...else語(yǔ)句的嵌套寫(xiě)法
這篇文章主要介紹了Java編程中if...else語(yǔ)句的嵌套寫(xiě)法,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11
SpringBoot對(duì)接clerk實(shí)現(xiàn)用戶信息獲取功能
Clerk是一個(gè)提供身份驗(yàn)證和用戶管理的服務(wù),可以幫助開(kāi)發(fā)者快速集成這些功能,下面我們就來(lái)看看如何使用Spring?Boot對(duì)接Clerk實(shí)現(xiàn)用戶信息的獲取吧2025-02-02
Spring中ClassPathXmlApplicationContext類的使用詳解
這篇文章主要介紹了Spring中ClassPathXmlApplicationContext類的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01

