国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

幾種placeholder替換項目參數的方法比較

2019-11-15 00:55:53
字體:
來源:轉載
供稿:網友
幾種placeholder替換項目參數的方法比較

引言:(引自:http://openwebx.org/docs/autoconfig.html)

在一個應用中,我們總是會遇到一些參數,例如:

  • 數據庫服務器ip地址、端口、用戶名;

  • 用來保存上傳資料的目錄。

  • 一些參數,諸如是否打開cache、加密所用的密鑰名稱等等。

這些參數有一個共性,那就是:它們和應用的邏輯無關,只和當前環境、當前系統用戶相關。以下場景很常見:

  • 在開發、測試、發布階段,使用不同的數據庫服務器;

  • 在開發階段,使用Windows的A開發者將用戶上傳的文件存放在d:/my_upload目錄中,而使用linux的B開發者將同樣的文件存放在/home/myname/my_upload目錄中。

  • 在開發階段設置cache=off,在生產環境中設置cache=on

很明顯,這些參數不適合被“硬編碼”在配置文件或代碼中。因為每一個從源碼庫中取得它們的人,都有可能需要修改它們,使之與自己的環境相匹配

......

很多框架支持使用placeholder占位符替換配置文件中的參數,然后在運行期或者編譯器讀取PRoperties文件,完成動態配置。最近剛好研究了幾種使用占位符替換配置的方法,故在此做個比較和總結:

-------------------------我是分割線----------------------------

1.使用spring自帶的實體類來配置參數

Spring的框架中為您提供了一個 BeanFactoryPostProcessor 的實作類別: org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。藉由這個類別,您可以將一些組態設定,移出至.properties檔案中,如此的安排可以讓xml定義檔負責系統相關設定,而.properties檔可以作為客戶根據需求,自定義一些相關的參數。

    <!--參數配置,參數過濾,使用properties替換占位符 -->             <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="locations">            <list>                <value>classpath:config/spring-daily.properties</value>            </list>        </property>    </bean>

2.使用maven自帶的build設置來實現參數過濾

這是通過在build節點中添加filter和resource來實現的,在<build>標簽下有一個<filters>標簽,用于定義指定filter屬性的位置,例如filter元素賦值filters/filter1.properties,那么這個文件里面就可以定義name=value對,這個name=value對的值就可以在工程pom中通過${name}引用,默認的filter目錄是${basedir}/src/main/fiters/

    <filters>         <filter>src/main/filters/filter-${env}.properties</filter>     </filters>     <resources>         <resource>             <directory>src/main/resources</directory>             <filtering>true</filtering>         </resource>        </resources>

  

3.使用maven的插件maven-war-plugin來實現參數過濾

使用maven-war-plugin這個插件可以在執行打包命令的時候指定我要打哪個環境的包(具體方法不在這里展開講),使用上比maven原生的filter機制要方便,功能也更強大

<filters>      <filter> src/main/resources/IProject-test.properties </filter>  </filters>  <plugin>      <groupId>org.apache.maven.plugins</groupId>      <artifactId>maven-war-plugin</artifactId>      <configuration>          <webResources>              <resource>                  <directory>src/main/packageFilter</directory>                  <filtering>true</filtering>                  <targetPath>WEB-INF</targetPath>              </resource>          </webResources>      </configuration>  </plugin> 

4.使用AutoConfig插件來實現參數過濾

AutoConfig是一種類似于Maven Filtering的工具。是阿里開發的,一款功能強大的參數過濾插件,具體功能和使用方法不在這里展開講,想要進一步了解的去這里:http://openwebx.org/docs/autoconfig.html

-------------------------我是分割線----------------------------

4種參數過濾方式的比較:

方法

優點

缺點

替換參數的時期

上手難度

功能性

Spring插件

速度快

配置簡單

只能針對spring的bean起作用,其它配置內容無法過濾

運行時

Maven原生設置

Maven自帶功能,不需要額外的插件

資源文件被復制到目標目錄時才起作用

功能偏弱

build時

偏弱

maven-war-plugin插件

可以針對多套環境進行設置

覆蓋原文件

配置靈活

滿足大部分需求

缺少驗證機制

Build時期才執行因此速度較慢

build時

AutoConfig插件

有驗證機制;

功能強大

針對配置文件,不需要打包,因此不需要項目源代碼文件

教程較少

上手較難

build時

最復雜

最強

參考資料:

http://m.survivalescaperooms.com/QQ78292959/p/3711501.html

http://lishuaibt.VEvb.com/blog/614783

http://nileader.blog.51cto.com/1381108/449956

http://openwebx.org/docs/autoconfig.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 通州市| 元氏县| 清苑县| 乐平市| 额尔古纳市| 左权县| 永川市| 临猗县| 体育| 凤阳县| 贵州省| 女性| 灵川县| 吴江市| 乐山市| 伊宁市| 社旗县| 永城市| 罗江县| 陈巴尔虎旗| 湘潭县| 四子王旗| 喜德县| 特克斯县| 池州市| 冕宁县| 寿光市| 金乡县| 前郭尔| 石楼县| 丁青县| 信宜市| 烟台市| 阿拉善盟| 韩城市| 林口县| 寻乌县| 岑巩县| 岱山县| 泸溪县|