SpringBoot項目多層級多環(huán)境yml設(shè)計詳解
需求場景
基礎(chǔ)設(shè)施模塊中有一些通用固定的基礎(chǔ)配置。例如:日志的配置,Spring本身的配置以及MyBatis Plus相關(guān)的固定配置等等。 這些配置往往與環(huán)境無關(guān),如何復(fù)用?
# 日志配置 logging: level: # 記得配置到包名 com.agileboot: debug org.springframework: info pattern: console: "%date %thread %green(%level) [%cyan(%logger{10}):%magenta(%line)] %red(%method) | %msg%n" # Spring配置 spring: # 文件上傳 servlet: multipart: # 單個文件大小 max-file-size: 10MB # 設(shè)置總上傳的文件大小 max-request-size: 20MB mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER jackson: deserialization: fail-on-unknown-properties: false serialization: write-dates-as-timestamps: false date-format: yyyy-MM-dd HH:mm:ss
基礎(chǔ)設(shè)施模塊中還有一些獨立于環(huán)境的配置。例如Mysql和Redis或者MQ之類的。如何區(qū)分環(huán)境?
# 數(shù)據(jù)源配置 spring: # redis 配置 redis: # 地址 host: localhost # 端口,默認為6379 port: 36379 # 數(shù)據(jù)庫索引 database: 0 # 密碼 password: 12345 # 連接超時時間 timeout: 10s lettuce: pool: # 連接池中的最小空閑連接 min-idle: 0 # 連接池中的最大空閑連接 max-idle: 8 # 連接池的最大數(shù)據(jù)庫連接數(shù) max-active: 8 # #連接池最大阻塞等待時間(使用負值表示沒有限制) max-wait: -1ms
日志相關(guān)的配置我們一般都配在logback.xml文件中。如何實現(xiàn)不同環(huán)境日志路徑不一樣?
想要達到的效果
- 復(fù)用基礎(chǔ)設(shè)施模塊中的固定配置。
- 區(qū)分多環(huán)境的配置。
- logback日志引入多環(huán)境配置。
詳細代碼實現(xiàn)在開源項目Agileboot中:github.com/valarchie/A…
實現(xiàn)
假設(shè)我們有一個Admin模塊,我們可以給它定義一份application.yml文件。文件中描述該模塊特定的配置。比如端口,訪問路徑之類的。
# 開發(fā)環(huán)境配置 server: # 服務(wù)器的HTTP端口,默認為8080 port: 8080 servlet: # 應(yīng)用的訪問路徑 context-path: / tomcat: # tomcat的URI編碼 uri-encoding: UTF-8 # 連接數(shù)滿后的排隊數(shù),默認為100 accept-count: 1000 threads: # tomcat最大線程數(shù),默認為200 max: 800 # Tomcat啟動初始化的線程數(shù),默認值10 min-spare: 100 # Spring配置 如果需要無Mysql 無Redis直接啟動的話 dev改為test # 生產(chǎn)環(huán)境把dev改為prod spring: profiles: active: basic,dev
在基礎(chǔ)設(shè)施模塊中新建
applicaiton-basic.yml,配置一些與環(huán)境無關(guān)的基礎(chǔ)固定復(fù)用配置。
application-dev.yml,配置一些和環(huán)境相關(guān)的配置,例如數(shù)據(jù)庫的配置。
然后在spring.profiles.active配置中指定basic和dev文件。
此時springboot會自動去找applicaiton-basic.yml和application-dev.yml文件。
所以我們最終的配置文件是由applicaiton.yml+applicaiton-basic.yml+applicaiton-dev.yml疊加的配置。
日志的多環(huán)境配置,我們可以新建一份logback-spring.xml文件。 假設(shè)我們想要根據(jù)環(huán)境配置不同的日志路徑??梢栽诶鏰pplication-dev.yml文件中配置logging.file.path。
然后在logback-spring.xml文件中使用springProperty標簽讀取多環(huán)境yml中配置的路徑。
此時日志的路徑就會分別讀取不同環(huán)境配置的路徑了。
關(guān)于多層級多環(huán)境的yml及日志設(shè)計的內(nèi)容比較少。在此稍作總結(jié),希望有幫助到有類似需求的人。
以上就是SpringBoot項目多層級多環(huán)境yml設(shè)計詳解的詳細內(nèi)容,更多關(guān)于SpringBoot多層級多環(huán)境yml的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot中@Async默認線程池導(dǎo)致OOM問題
這篇文章主要介紹了springboot中@Async默認線程池導(dǎo)致OOM問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+mysql+maven+tomcat實現(xiàn)一個文創(chuàng)商城系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能的示例
這篇文章主要介紹了基于Spring的Maven項目實現(xiàn)發(fā)送郵件功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03