摘要:在實際用中,我們的服務(wù)通常要部署在不同的環(huán)境中,并且每個環(huán)境有只適用于本環(huán)境的配置文件。在讀取配置文件的時候,通過系統(tǒng)變量進行選擇某一個配置文件或者在部署腳本中將不同機房的配置文件按照部署的環(huán)境不同進行上傳。
在實際用中,我們的Java服務(wù)通常要部署在不同的環(huán)境中,并且每個環(huán)境有只適用于本環(huán)境的配置文件。
例如測試環(huán)境需要連接測試數(shù)據(jù)庫,生產(chǎn)環(huán)境又會在不同的機房進行服務(wù)部署,需要連接本機房的數(shù)據(jù)庫從庫。
同時,每個環(huán)境的配置又有很多相同的部分,比如cache的超時時間等。本文介紹如何使用maven進行多個部署環(huán)境的配置文件管理。
對于多個運行環(huán)境的配置文件管理,比較原始的方法是為每一個部署環(huán)境創(chuàng)建一個配置文件:
resources ├── prod_beijing_config.properties ├── prod_shanghai_config.properties ├── dev_config.properties └── config.properties
在上面的例子中我們配置了兩個正式環(huán)境的配置文件,分別是北京機房和上海機房;配置了一個開發(fā)環(huán)境的配置文件,還有一個本地運行使用的配置文件。
在讀取配置文件的時候,通過系統(tǒng)變量進行選擇某一個配置文件或者在部署腳本中將不同機房的配置文件按照部署的環(huán)境不同進行上傳。
這樣做的問題有:
實現(xiàn)復(fù)雜,需要在Java程序或者在部署腳本中進行處理
各個部署環(huán)境公用的配置要維護多份。例如需要新增一個和部署環(huán)境無關(guān)的配置項,需要在所有的配置文件中依次添加,稍有不慎就會造成部署失敗。
下面介紹一種使用maven進行配置文件管理的方法,可以做到:
加載配置文件的過程對應(yīng)用程序透明,不管在哪個環(huán)境中都只需要加載 config.properties
公共配置項在一個文件中維護
首先修改項目的config.properties,將需要根據(jù)運行環(huán)境不同取不同值的配置項目用變量代替,例如:
mysql.host = ${mysql.host} mysql.port = ${mysql.port} cache.size = 1000
然后在項目的根目錄上創(chuàng)建一個 profiles 目錄,存放所有運行環(huán)境的配置文件。
. ├── README.md ├── pom.xml ├── profiles │ ├── beijing_config.properties │ ├── shanghai_config.properties │ └── dev_config.properties ├── src │ ├── main │ │ ├── java │ │ │ └── com
注意這里每個機房的配置文件中只包含需要根據(jù)運行環(huán)境不同取不同值的配置項:
$ cat profiles/beijing_config.properties mysql.host = beijing.mysql.domain mysql.port = 4534 $ cat profiles/shanghai_config.properties mysql.host = shanghai.mysql.domain mysql.port = 4534 $ cat profiles/dev_config.properties mysql.host = test.mysql.host mysql.port = 4534
最關(guān)鍵的部分是pom.xml的配置:
4.0.0 demo demo war 1.0-SNAPSHOT .... UTF-8 UTF-8 dev true dev beijing beijing shanghai shanghai ... profiles/${build.profile.id}_config.properties ... src/main/resources/ true
在這個pom文件中,我們首先定義了三個profile,dev profile 中將 build.profile.id 的值設(shè)置為 dev,beijing profile 中將 build.profile.id 的值設(shè)置為 beijing,shanghai profile 中將 build.profile.id 的值設(shè)置為 shanghai。
同時,這個配置中還指定了資源文件的位置是 src/main/resources/, 在生成這些資源文件的時候使用 profiles/${build.profile.id}_config.properties 中定義的變量進行內(nèi)容的替換。
在打包的時候,如果我們執(zhí)行:mvn package -P beijing , 這時首先會找到beijing的profile,將build.profile.id賦值為beijing,
這樣定義變量的文件名就變成了 profiles/beijing_config.properties, 將config.properties 打入war包的時候會從 profiles/beijing_config.properties 中讀取 ${mysql.host} 和 ${mysql.port} 的值。最后war包中的 config.properties
就變成了:
mysql.host = beijing.mysql.domain mysql.port = 4534 cache.size = 1000
當(dāng)沒有指定 -P 選項的時候,由于 dev 這個環(huán)境配置了
關(guān)于配置文件的讀取,可以使用Owner減少代碼量,并且支持動態(tài)加載。這里有一個簡要的說明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69863.html
摘要:的配置文件默認為或,此外僅以配置為說明。的由的標簽管理。管理由于構(gòu)建是基于或,此處僅以說明。管理分五步,以下詳細介紹。并且為表示,會將文件內(nèi)容的替換為相應(yīng)的變量如文件中的會替換為屬性值。 1. Spring Profile Spring可使用Profile決定程序在不同環(huán)境下執(zhí)行情況,包含配置、加載Bean、依賴等。 Spring的Profile一般項目包含:dev(開發(fā)), test...
摘要:,整合剛才已經(jīng)下載好了,現(xiàn)在我們添加文件標簽加一行如下然后是和在文件中添加數(shù)據(jù)源配置連接本地,新建數(shù)據(jù)庫,查詢執(zhí)行項目頁面列出來的語句自動建立該項目需要的數(shù)據(jù)庫內(nèi)容。 簡介:本文主要介紹把現(xiàn)今主流的springboot框架項目和精準測試工具進行結(jié)合和應(yīng)用,通過精準測試的數(shù)據(jù)穿透、數(shù)據(jù)采集、測試用例與代碼的雙向追溯、數(shù)據(jù)分析等一系列精準測試的特有功能,達到對項目質(zhì)量的保證。 本次環(huán)境搭...
摘要:項目根目錄項目名項目版本號項目目錄打包的名字二依賴管理概述通過在配置依賴坐標,會自動幫我們下載依賴的構(gòu)件。關(guān)于父模塊的依賴配置注意兩點一般都是通過來配置所有依賴及其版本號,然后子模塊,在自己的文件中聲明依賴即可,不用再指定版本,以確保統(tǒng)一。 一、Maven 1.1 為什么寫Maven 工欲善其事,必先利其器。如今Java相關(guān)開發(fā),基本離不開Maven、Gradle、MAT、Hudson...
摘要:項目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代開發(fā)基礎(chǔ)系列文章,介紹了的歷史背景與多種構(gòu)建工具對比,以及的基本配置安裝與使用本文涉及的參考資料聲明在學(xué)習(xí)與實踐資料索引以及學(xué)習(xí)與資料索引。 Maven 項目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代 Java 開發(fā)基礎(chǔ)系列文章,介紹了 Maven 的歷史背景與多種構(gòu)建工具對比,以及 Maven 的基本配置安裝與使用;本文涉及的參考資料聲明在 Java 學(xué)習(xí)與實踐資料索引以及...
閱讀 1072·2021-11-25 09:43
閱讀 696·2021-11-22 14:45
閱讀 3816·2021-09-30 09:48
閱讀 1061·2021-08-31 09:41
閱讀 1970·2019-08-30 13:52
閱讀 1976·2019-08-30 11:24
閱讀 1341·2019-08-30 11:07
閱讀 950·2019-08-29 12:15