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

資訊專(zhuān)欄INFORMATION COLUMN

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

loonggg / 1663人閱讀

摘要:在實(shí)際用中,我們的服務(wù)通常要部署在不同的環(huán)境中,并且每個(gè)環(huán)境有只適用于本環(huán)境的配置文件。在讀取配置文件的時(shí)候,通過(guò)系統(tǒng)變量進(jìn)行選擇某一個(gè)配置文件或者在部署腳本中將不同機(jī)房的配置文件按照部署的環(huán)境不同進(jìn)行上傳。

在實(shí)際用中,我們的Java服務(wù)通常要部署在不同的環(huán)境中,并且每個(gè)環(huán)境有只適用于本環(huán)境的配置文件。
例如測(cè)試環(huán)境需要連接測(cè)試數(shù)據(jù)庫(kù),生產(chǎn)環(huán)境又會(huì)在不同的機(jī)房進(jìn)行服務(wù)部署,需要連接本機(jī)房的數(shù)據(jù)庫(kù)從庫(kù)。
同時(shí),每個(gè)環(huán)境的配置又有很多相同的部分,比如cache的超時(shí)時(shí)間等。本文介紹如何使用maven進(jìn)行多個(gè)部署環(huán)境的配置文件管理。

對(duì)于多個(gè)運(yùn)行環(huán)境的配置文件管理,比較原始的方法是為每一個(gè)部署環(huán)境創(chuàng)建一個(gè)配置文件:

resources
├── prod_beijing_config.properties
├── prod_shanghai_config.properties
├── dev_config.properties
└── config.properties

在上面的例子中我們配置了兩個(gè)正式環(huán)境的配置文件,分別是北京機(jī)房和上海機(jī)房;配置了一個(gè)開(kāi)發(fā)環(huán)境的配置文件,還有一個(gè)本地運(yùn)行使用的配置文件。
在讀取配置文件的時(shí)候,通過(guò)系統(tǒng)變量進(jìn)行選擇某一個(gè)配置文件或者在部署腳本中將不同機(jī)房的配置文件按照部署的環(huán)境不同進(jìn)行上傳。

這樣做的問(wèn)題有:

實(shí)現(xiàn)復(fù)雜,需要在Java程序或者在部署腳本中進(jìn)行處理

各個(gè)部署環(huán)境公用的配置要維護(hù)多份。例如需要新增一個(gè)和部署環(huán)境無(wú)關(guān)的配置項(xiàng),需要在所有的配置文件中依次添加,稍有不慎就會(huì)造成部署失敗。

下面介紹一種使用maven進(jìn)行配置文件管理的方法,可以做到:

加載配置文件的過(guò)程對(duì)應(yīng)用程序透明,不管在哪個(gè)環(huán)境中都只需要加載 config.properties

公共配置項(xiàng)在一個(gè)文件中維護(hù)

首先修改項(xiàng)目的config.properties,將需要根據(jù)運(yùn)行環(huán)境不同取不同值的配置項(xiàng)目用變量代替,例如:

mysql.host = ${mysql.host}
mysql.port = ${mysql.port}

cache.size = 1000

然后在項(xiàng)目的根目錄上創(chuàng)建一個(gè) profiles 目錄,存放所有運(yùn)行環(huán)境的配置文件。

.
├── README.md
├── pom.xml
├── profiles
│   ├── beijing_config.properties
│   ├── shanghai_config.properties
│   └── dev_config.properties
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com

注意這里每個(gè)機(jī)房的配置文件中只包含需要根據(jù)運(yùn)行環(huán)境不同取不同值的配置項(xiàng):

$ 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
            
        
        ...
    

在這個(gè)pom文件中,我們首先定義了三個(gè)profile,dev profile 中將 build.profile.id 的值設(shè)置為 dev,beijing profile 中將 build.profile.id 的值設(shè)置為 beijing,shanghai profile 中將 build.profile.id 的值設(shè)置為 shanghai。
同時(shí),這個(gè)配置中還指定了資源文件的位置是 src/main/resources/, 在生成這些資源文件的時(shí)候使用 profiles/${build.profile.id}_config.properties 中定義的變量進(jìn)行內(nèi)容的替換。

在打包的時(shí)候,如果我們執(zhí)行:mvn package -P beijing , 這時(shí)首先會(huì)找到beijing的profile,將build.profile.id賦值為beijing,
這樣定義變量的文件名就變成了 profiles/beijing_config.properties, 將config.properties 打入war包的時(shí)候會(huì)從 profiles/beijing_config.properties 中讀取 ${mysql.host}${mysql.port} 的值。最后war包中的 config.properties
就變成了:

mysql.host = beijing.mysql.domain
mysql.port = 4534

cache.size = 1000

當(dāng)沒(méi)有指定 -P 選項(xiàng)的時(shí)候,由于 dev 這個(gè)環(huán)境配置了 true ,所以會(huì)被默認(rèn)啟用。

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

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

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

相關(guān)文章

  • Maven管理SpringBoot Profile

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

    wenzi 評(píng)論0 收藏0
  • 開(kāi)發(fā)者測(cè)試-采用精準(zhǔn)測(cè)試工具對(duì)Spring Boot應(yīng)用進(jìn)行測(cè)試

    摘要:,整合剛才已經(jīng)下載好了,現(xiàn)在我們添加文件標(biāo)簽加一行如下然后是和在文件中添加數(shù)據(jù)源配置連接本地,新建數(shù)據(jù)庫(kù),查詢執(zhí)行項(xiàng)目頁(yè)面列出來(lái)的語(yǔ)句自動(dòng)建立該項(xiàng)目需要的數(shù)據(jù)庫(kù)內(nèi)容。 簡(jiǎn)介:本文主要介紹把現(xiàn)今主流的springboot框架項(xiàng)目和精準(zhǔn)測(cè)試工具進(jìn)行結(jié)合和應(yīng)用,通過(guò)精準(zhǔn)測(cè)試的數(shù)據(jù)穿透、數(shù)據(jù)采集、測(cè)試用例與代碼的雙向追溯、數(shù)據(jù)分析等一系列精準(zhǔn)測(cè)試的特有功能,達(dá)到對(duì)項(xiàng)目質(zhì)量的保證。  本次環(huán)境搭...

    galois 評(píng)論0 收藏0
  • Maven核心概念和日常實(shí)踐

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

    894974231 評(píng)論0 收藏0
  • Maven踩過(guò)的坑

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

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

    摘要:項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代開(kāi)發(fā)基礎(chǔ)系列文章,介紹了的歷史背景與多種構(gòu)建工具對(duì)比,以及的基本配置安裝與使用本文涉及的參考資料聲明在學(xué)習(xí)與實(shí)踐資料索引以及學(xué)習(xí)與資料索引。 Maven 項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代 Java 開(kāi)發(fā)基礎(chǔ)系列文章,介紹了 Maven 的歷史背景與多種構(gòu)建工具對(duì)比,以及 Maven 的基本配置安裝與使用;本文涉及的參考資料聲明在 Java 學(xué)習(xí)與實(shí)踐資料索引以及...

    2501207950 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<