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

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

Spring配置文件外部化配置及.properties的通用方法

2019-11-15 01:06:34
字體:
來源:轉載
供稿:網友
SPRing配置文件外部化配置及.properties的通用方法摘要:本文深入探討了配置化文件(即.properties)的普遍應用方式。包括了Spring、一般的、遠程的三種使用方案。

關鍵詞:.properties, Spring,Disconf, java

解決問題:如何正確使用.properties配置文件。


若是有其他代碼需要此Spring屬性配置,將Spring配置中的屬性值設置遷移到外部的屬性文件中,是必需的操作,這也可以使Spring配置文件更易讀。在這里我們不僅要討論Spring的外部化配置,還要深入探討配置化文件(即.properties)的普遍應用方式。這樣就可以在不用重新打包和重新部署應用的情況下,配置這些屬性值。從開發過程來看,將通用變量提出,并可配,也是寫出高可讀、低耦合代碼的必然途徑。從結果來看,這對于靈活性地進行測試、運維工作,是非常有好處的。在開發時,我們盡量把部署時需要修改的信息提出放在文件中,方便部署人員部署。一個大型系統中,多個項目有相同的配置信息,則部署人員部署時需要對多個不同的文件修改相同的信息,這不是好的代碼結構,麻煩部署人員的同時,也增加了犯錯的可能性。下面,就是針對以上問題的解決方案。一、原先的Spring配置 下面是普通的Spring配置文件。可以看出,這里的value可以提出,以供其它代碼重用。<bean id="IndexHandler" name="IndexHandler" class="wang.anqi.util.IndexHandler"> <property name="solrUrl" value="http://192.8.125.30:8983/solr/core0"/></bean>二、經過改良后的配置1、Spring配置 下面是引入了兩個配置文件db.properties和solr.properties后的Spring配置文件。<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <propertyname="locations"> <list> <value>classpath:db.properties</value> <value>classpath:solr.properties</value> </list> </property></bean><beanid="IndexHandler"name="IndexHandler"class="wang.anqi.util.IndexHandler"> <propertyname="solrUrl"value=${solr.url}/></bean> 以下是配置文件db.propertiesdb.ip = 192.8.125.201db.name = aitanjuptdb.url = jdbc:MySQL://${db.ip}:3306/${db.name}db.username = rootdb.passWord = 1234 配置文件solr.propertiessolr.url = http://192.8.125.30:8983/solr/core02、使用@Value注解來獲取配置 屬性占位符配置的作用不限于xml中的Bean屬性配置。還可以用它來配置@Value注解的屬性。public class IndexHandler{ @Value("${solr.url}") private String solrUrl;} 然而這種方式使用起來并不十分方便。你需要先在類里面申明一個屬性。3、使用ResourceBundle來讀取配置
  1. privatestaticString myValue;static{try{ResourceBundle bundle =ResourceBundle.getBundle(PROPERTIES_FILE_NAME,Locale.ENGLISH);//PROPERTIES_FILE_NAME可以是solr.properties文件名的一部分:"solr"myValue = bundle.getString(MY_VALUE_KEY).trim();//MY_VALUE_KEY可以是solr.url}catch(Exception ex){System.err.println("[Property]:Can't Load property.properties");myValue ="default value";System.out.println("myValue will use the default value: "+ myValue);}}

  2. 這種方式使用起來比較方便。

三、遠程讀取配置文件 只是通過以上方式來管理配置,尚覺不足。在一個比較大的系統中,很有可能多個子系統都需要使用相同配置的情況,當然,你可以將這些配置記入數據庫中并提供接口,自己管理起來。但是如果需要實時地將配置信息推送到不同的子系統中,情況就更將復雜了。 可以采用Disconf作為分布式配置管理平臺,Disconf是一套完整的基于zookeeper的分布式配置統一解決方案。支持配置(配置項+配置文件)的分布式化管理,配置發布統一化,極簡的使用方式(注解式編程 或 XML代碼無代碼侵入模式),低侵入性或無侵入性、強兼容性,需要Spring編程環境。其依賴于:Mysql、Tomcat、Nginx、zookeeeper、Redis。 更多詳細介紹請移步 https://github.com/knightliao/disconf

來自王安琪


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜黄县| 泰兴市| 且末县| 喀喇沁旗| 谷城县| 福贡县| 阿勒泰市| 连州市| 新平| 南昌县| 南丰县| 余姚市| 郎溪县| 鞍山市| 迁西县| 邛崃市| 黄浦区| 称多县| 莱阳市| 平谷区| 喀什市| 池州市| 钟山县| 抚远县| 吴忠市| 文水县| 宁都县| 防城港市| 平罗县| 灵台县| 环江| 板桥市| 峨山| 晴隆县| 武安市| 洛隆县| 全南县| 柳江县| 张掖市| 太原市| 来凤县|