国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

通過maven管理不同環(huán)境下的配置文件

loonggg / 1656人閱讀

摘要:在實際用中,我們的服務(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)境配置了 true ,所以會被默認啟用。

關(guān)于配置文件的讀取,可以使用Owner減少代碼量,并且支持動態(tài)加載。這里有一個簡要的說明

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69863.html

相關(guān)文章

  • Maven管理SpringBoot Profile

    摘要:的配置文件默認為或,此外僅以配置為說明。的由的標簽管理。管理由于構(gòu)建是基于或,此處僅以說明。管理分五步,以下詳細介紹。并且為表示,會將文件內(nèi)容的替換為相應(yīng)的變量如文件中的會替換為屬性值。 1. Spring Profile Spring可使用Profile決定程序在不同環(huán)境下執(zhí)行情況,包含配置、加載Bean、依賴等。 Spring的Profile一般項目包含:dev(開發(fā)), test...

    wenzi 評論0 收藏0
  • 開發(fā)者測試-采用精準測試工具對Spring Boot應(yīng)用進行測試

    摘要:,整合剛才已經(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)境搭...

    galois 評論0 收藏0
  • Maven核心概念和日常實踐

    摘要:項目根目錄項目名項目版本號項目目錄打包的名字二依賴管理概述通過在配置依賴坐標,會自動幫我們下載依賴的構(gòu)件。關(guān)于父模塊的依賴配置注意兩點一般都是通過來配置所有依賴及其版本號,然后子模塊,在自己的文件中聲明依賴即可,不用再指定版本,以確保統(tǒng)一。 一、Maven 1.1 為什么寫Maven 工欲善其事,必先利其器。如今Java相關(guān)開發(fā),基本離不開Maven、Gradle、MAT、Hudson...

    894974231 評論0 收藏0
  • Maven踩過的坑

    摘要:采用了一種被稱之為概念來管理項目,所有的項目配置信息都被定義在一個叫做的文件中,通過該文件,可以管理項目的整個聲明周期,包括編譯,構(gòu)建,測試,發(fā)布,報告等等。目前下絕大多數(shù)項目都已經(jīng)采用進行管理。 前言:對于微軟技術(shù)死忠的筆者來說,學(xué)習(xí)JAVA靈活又復(fù)雜的技術(shù)是件多么痛苦的事,開始想念我大微軟簡單的開發(fā)環(huán)境搭建以及完整詳盡的開發(fā)文檔,還有那一看就懂的案例教程了...可是為了工作,依舊不...

    cgspine 評論0 收藏0
  • Maven 項目構(gòu)建基礎(chǔ)

    摘要:項目構(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í)與實踐資料索引以及...

    2501207950 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<