摘要:本文深入探討了配置化文件(即.properties)的普遍應(yīng)用方式。包括了Spring、一般的、遠程的三種使用方案。關(guān)鍵詞:.properties, Spring, Disconf, Java
解決問題:如何正確使用.properties配置文件。
創(chuàng)新互聯(lián)服務(wù)項目包括泗水網(wǎng)站建設(shè)、
泗水網(wǎng)站制作、泗水網(wǎng)頁制作以及泗水網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,
泗水網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到泗水省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
若是有其他代碼需要此Spring屬性配置,將Spring配置中的屬性值設(shè)置遷移到外部的屬性文件中,是必需的操作,這也可以使Spring配置文件更易讀。在這里我們不僅要討論Spring的外部化配置,還要深入探討配置化文件(即.properties)的普遍應(yīng)用方式。這樣就可以在不用重新打包和重新部署應(yīng)用的情況下,配置這些屬性值。從開發(fā)過程來看,將通用變量提出,并可配,也是寫出高可讀、低耦合代碼的必然途徑。從結(jié)果來看,這對于靈活性地進行測試、運維工作,是非常有好處的。在開發(fā)時,我們盡量把部署時需要修改的信息提出放在文件中,方便部署人員部署。一個大型系統(tǒng)中,多個項目有相同的配置信息,則部署人員部署時需要對多個不同的文件修改相同的信息,這不是好的代碼結(jié)構(gòu),麻煩部署人員的同時,也增加了犯錯的可能性。下面,就是針對以上問題的解決方案。
一、原先的Spring配置
下面是普通的Spring配置文件??梢钥闯?,這里的value可以提出,以供其它代碼重用。
id="IndexHandler" name="IndexHandler" class="wang.anqi.util.IndexHandler">
name="solrUrl" value="http://192.8.125.30:8983/solr/core0"/>
二、經(jīng)過改良后的配置 1、Spring配置
下面是引入了兩個配置文件db.properties和solr.properties后的Spring配置文件。
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> name="locations">
<value>classpath:db.propertiesvalue>
<value>classpath:solr.propertiesvalue>
id="IndexHandler" name="IndexHandler" class="wang.anqi.util.IndexHandler">
name="solrUrl" value=${solr.url}/>
以下是配置文件db.properties
db.ip= 192.8.125.201
db.name= aitanjupt
db.url= jdbc:mysql://${db.ip}:3306/${db.name}
db.username= root
db.password= 1234
配置文件solr.properties
solr.url= http://192.8.125.30:8983/solr/core0
2、使用@Value注解來獲取配置 屬性占位符配置的作用不限于XML中的Bean屬性配置。還可以用它來配置@Value注解的屬性。
public class IndexHandler
{
@Value("${solr.url}")
private String solrUrl;
}
然而這種方式使用起來并不十分方便。你需要先在類里面申明一個屬性。 3、使用ResourceBundle來讀取配置
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);
}
}
這種方式使用起來比較方便。
三、遠程讀取配置文件
只是通過以上方式來管理配置,尚覺不足。在一個比較大的系統(tǒng)中,很有可能多個子系統(tǒng)都需要使用相同配置的情況,當然,你可以將這些配置記入數(shù)據(jù)庫中并提供接口,自己管理起來。但是如果需要實時地將配置信息推送到不同的子系統(tǒng)中,情況就更將復(fù)雜了。 可以采用Disconf作為分布式配置管理平臺,Disconf是一套完整的基于zookeeper的分布式配置統(tǒng)一解決方案。支持配置(配置項+配置文件)的分布式化管理,配置發(fā)布統(tǒng)一化,極簡的使用方式(注解式編程 或 XML代碼無代碼侵入模式),低侵入性或無侵入性、強兼容性,需要Spring編程環(huán)境。其依賴于:Mysql、Tomcat、Nginx、zookeeeper、Redis。 Disconf的缺陷在于安全問題,無需帳號登陸就可以下拉、下載各Properties。 更多詳細介紹請移步 https://github.com/knightliao/disconf
來自王安琪
作者:Angel 出處:http://www.cnblogs.com/wgp13x/ 歡迎轉(zhuǎn)載或分享,但請務(wù)必聲明文章出處。如果文章對您有幫助,希望你能推薦或關(guān)注。
王安琪,英文名Angel,南京郵電大學計算機應(yīng)用技術(shù)碩士學位。
熟悉Java、C#編程語言。專注于WebService、海量數(shù)據(jù)處理、搜索引擎技術(shù)、消息中間件技術(shù)、分布式文件存儲、.NET應(yīng)用程序開發(fā)、系統(tǒng)架構(gòu)設(shè)計。主要從事大數(shù)據(jù)管理系統(tǒng)的研發(fā),項目經(jīng)理,系統(tǒng)架構(gòu)師,就職于江蘇金陵科技集團有限公司。
Email:aitanjupt@hotmail.com
QQ:289770363
分享名稱:Spring配置文件外部化配置及.properties的通用方法-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:
http://weahome.cn/article/dcehgd.html