SpringBoot多環(huán)境配置完整過程記錄
多環(huán)境開發(fā)
引入:開一家奶茶店的故事
假如你要開一家網(wǎng)紅奶茶店,從籌備到營業(yè),你會(huì)經(jīng)歷這幾個(gè)階段:
工地裝修期(開發(fā)環(huán)境)
你在毛坯店里敲敲打打、試裝水電、調(diào)整位置。這時(shí)候你可以隨意改動(dòng),打翻油漆、鉆錯(cuò)孔都沒關(guān)系,反正還沒客人。
對應(yīng)到項(xiàng)目里,這就是開發(fā)環(huán)境——你可以隨便改代碼、刪測試數(shù)據(jù)、打印調(diào)試日志,不怕影響用戶試營業(yè)樣板間(測試環(huán)境)
裝修完成后,你邀請親朋好友來試喝:用和正式開業(yè)一樣的設(shè)備、原料、菜單,模擬真實(shí)訂單流程,看看奶茶好不好喝、出餐效率夠不夠、收銀系統(tǒng)穩(wěn)不穩(wěn)定。
對應(yīng)到項(xiàng)目里,這就是測試環(huán)境——用生產(chǎn)脫敏數(shù)據(jù)、接近生產(chǎn)的配置,讓專門的測試人員驗(yàn)證功能,提前發(fā)現(xiàn)問題正式營業(yè)(生產(chǎn)環(huán)境)
一切準(zhǔn)備就緒,開門迎客。這時(shí)候你必須保證:原料新鮮、設(shè)備穩(wěn)定、出餐高效,不能再像試營業(yè)時(shí)那樣隨便調(diào)整配方,更不能讓客人喝到“調(diào)試版”奶茶。
對應(yīng)到項(xiàng)目里,這就是生產(chǎn)環(huán)境——面向真實(shí)用戶,要求絕對穩(wěn)定、安全,日志只打關(guān)鍵錯(cuò)誤,功能不能隨意改動(dòng)。
如果跳過“試營業(yè)”直接開業(yè),你可能會(huì)遇到:菜單打印錯(cuò)誤、收銀系統(tǒng)崩潰、奶茶口味不穩(wěn)定等等一系列本可以輕易排除的問題
一、什么是多環(huán)境?
多環(huán)境 就是為軟件項(xiàng)目在不同階段(開發(fā)、測試、上線)提供獨(dú)立的“運(yùn)行容器”(將所需資源和項(xiàng)目本身部署到不同的機(jī)器上),每個(gè)容器擁有專屬的配置、數(shù)據(jù)和運(yùn)行規(guī)則,彼此完全隔離,互不影響。
二、為什么要搞多環(huán)境?
1. 隔離風(fēng)險(xiǎn):避免“本地好的,線上炸了”
- 數(shù)據(jù)隔離:開發(fā)時(shí)可以隨意刪改測試數(shù)據(jù),不會(huì)影響生產(chǎn)環(huán)境的真實(shí)用戶數(shù)據(jù);
- 配置隔離:開發(fā)環(huán)境開啟調(diào)試日志、熱部署,生產(chǎn)環(huán)境關(guān)閉調(diào)試、開啟性能優(yōu)化,避免配置混亂;
- 功能隔離:新功能先在開發(fā)/測試環(huán)境驗(yàn)證,沒問題再上線,避免直接影響用戶。
2. 提升效率
- 開發(fā):專注功能開發(fā),不用關(guān)心線上配置和數(shù)據(jù);
- 測試:在接近生產(chǎn)的環(huán)境驗(yàn)證功能,發(fā)現(xiàn)的Bug更貼近真實(shí)場景;
- 運(yùn)維:穩(wěn)定部署和維護(hù)生產(chǎn)環(huán)境,不用處理開發(fā)/測試環(huán)境的臨時(shí)問題。
3. 保障穩(wěn)定:提前發(fā)現(xiàn)生產(chǎn)級問題
- 測試環(huán)境用生產(chǎn)脫敏數(shù)據(jù)(如10萬條用戶數(shù)據(jù)),可以提前發(fā)現(xiàn)性能問題(如慢SQL、接口超時(shí));
- 預(yù)發(fā)布環(huán)境1:1復(fù)制生產(chǎn)配置,上線前做最后驗(yàn)證,避免直接炸生產(chǎn)。
三、多環(huán)境的種類
基礎(chǔ)三環(huán)境
| 環(huán)境名稱 | 英文標(biāo)識 | 奶茶店類比 | 關(guān)鍵特點(diǎn) |
|---|---|---|---|
| 開發(fā)環(huán)境 | dev | 工地裝修期 | 數(shù)據(jù)可隨意刪改、日志全開、支持熱部署 |
| 測試環(huán)境 | test | 試營業(yè)樣板間 | 數(shù)據(jù)是脫敏生產(chǎn)副本、配置接近生產(chǎn)、定期重置 |
| 生產(chǎn)環(huán)境 | prod | 正式營業(yè) | 數(shù)據(jù)絕對安全、日志極簡、性能優(yōu)先 |
擴(kuò)展五環(huán)境(復(fù)雜項(xiàng)目需要)
在三環(huán)境基礎(chǔ)上增加兩個(gè)階段,進(jìn)一步降低風(fēng)險(xiǎn):
- 預(yù)發(fā)布環(huán)境(pre):正式開業(yè)前的「壓力測試」,用真實(shí)設(shè)備和原料模擬高峰時(shí)段,驗(yàn)證出餐效率;
- 演示環(huán)境(demo):給投資人/加盟商看的「品牌旗艦店」,裝修精美、數(shù)據(jù)美化,功能穩(wěn)定。
四、應(yīng)用:Spring Boot 多環(huán)境配置
1. 配置文件分類
在 src/main/resources 目錄下創(chuàng)建以下文件,命名遵循 Spring Boot 官方規(guī)范:
application.yml:主配置文件(激活環(huán)境、公共配置)application-dev.yml:開發(fā)環(huán)境配置application-test.yml:測試環(huán)境配置application-prod.yml:生產(chǎn)環(huán)境配置

2. 核心配置示例
主配置文件application.yml
spring:
application:
name: milk-tea-shop
profiles:
active: dev # 默認(rèn)激活開發(fā)環(huán)境(工地模式)
開發(fā)環(huán)境application-dev.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_milk_tea
username: root
password: root
logging:
level:
root: debug # 調(diào)試日志
生產(chǎn)環(huán)境application-prod.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://prod-db:3306/prod_milk_tea
username: ${DB_USERNAME} # 環(huán)境變量讀取敏感信息
password: ${DB_PASSWORD}
logging:
level:
root: warn # 只打印警告/錯(cuò)誤
3. 激活環(huán)境的3種方式
- 配置文件指定:修改
application.yml中的spring.profiles.active=prod - 命令行指定:
java -jar milk-tea-shop.jar --spring.profiles.active=prod(可以用maven里的package指令打成 jar包 后操作) - IDE指定:在啟動(dòng)配置的
Program arguments中添加--spring.profiles.active=dev
總結(jié)
到此這篇關(guān)于SpringBoot多環(huán)境配置的文章就介紹到這了,更多相關(guān)SpringBoot多環(huán)境配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot多模塊化整合mybatis,mapper自動(dòng)注入失敗問題及解決
這篇文章主要介紹了springboot多模塊化整合mybatis,mapper自動(dòng)注入失敗問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
用Java代碼實(shí)現(xiàn)一幅春聯(lián)詳解
大家好,本篇文章主要講的是用Java代碼實(shí)現(xiàn)一幅春聯(lián)詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01
Java的作業(yè)調(diào)度類庫Quartz基本使用指南
這篇文章主要介紹了Java的作業(yè)調(diào)度類庫Quartz基本使用指南,Quartz能夠讓類按照指定的計(jì)劃順序執(zhí)行,需要的朋友可以參考下2016-03-03
springboot整合rabbitmq實(shí)現(xiàn)訂單超時(shí)取消案例分析
本文介紹了如何使用SpringBoot和RabbitMQ實(shí)現(xiàn)訂單超時(shí)取消功能,通過配置TTL隊(duì)列和死信交換機(jī),可以管理訂單的超時(shí)邏輯,實(shí)際應(yīng)用中,可以通過數(shù)據(jù)庫標(biāo)記訂單狀態(tài)或手動(dòng)確認(rèn)機(jī)制來防止訂單被錯(cuò)誤取消2025-01-01
Java?關(guān)鍵字break和continue的使用說明
這篇文章主要介紹了Java?關(guān)鍵字break和continue的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
基于EasyExcel實(shí)現(xiàn)百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出詳解
大數(shù)據(jù)的導(dǎo)入和導(dǎo)出,相信大家在日常的開發(fā)、面試中都會(huì)遇到。本文將為大家詳細(xì)介紹一下如何利用EasyExcel實(shí)現(xiàn)百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出,需要的可以參考一下2023-01-01
redisson.tryLock()參數(shù)的使用及理解
這篇文章主要介紹了redisson.tryLock()參數(shù)的使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
java中Servlet監(jiān)聽器的工作原理及示例詳解
這篇文章主要介紹了java中Servlet監(jiān)聽器的工作原理及示例詳解。Servlet監(jiān)聽器用于監(jiān)聽一些重要事件的發(fā)生,監(jiān)聽器對象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。感興趣的可以來了解一下2020-07-07

