Posted on 2008-12-19 09:03
帥子 閱讀(2132)
評(píng)論(0) 編輯 收藏 所屬分類:
j2se技術(shù)專區(qū)
在Spring環(huán)境下如何存取properties文件中的數(shù)值
1.介紹
為避免在JAVA程序中使用Hardcode,我們經(jīng)常使用一些properties文件存放一些經(jīng)常變化的數(shù)據(jù),在runtime環(huán)境下通過(guò)配置這些數(shù)據(jù)來(lái)達(dá)到靈活配置應(yīng)用程序。在Spring出現(xiàn)以前我們通常使用resource?bundle來(lái)實(shí)現(xiàn)對(duì)properties文件的讀取,但在Spring環(huán)境下問(wèn)題變得更加簡(jiǎn)單,我們只需要寫非常少的代碼就能實(shí)現(xiàn)對(duì)properties文件的隨機(jī)存取。
2.ApplicationContext.xml文件配置
ApplicationContext是BeanFactory的擴(kuò)展,它提供了BeanFactory的所有功能,ApplicationContext允許你通過(guò)完全聲明的方式配置和管理Spring和Spring管理的資源,本文我提供以下實(shí)例:?
<?xml?version="1.0"?encoding="UTF-8"?>
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
????<bean?id="configproperties"?
?????????class="org.springframework.beans.factory.config.PropertiesFactoryBean">
??????????<property?name="location"?value="file:config.properties"/>
????</bean>
?????<bean?id="propertyConfigurer"?????
?????????class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
?????????<property?name="properties"?ref="configproperties"/>
????</bean>
????<bean?id="tjtaskcode"?class="TJTaskCode">
??????????<property?name="taskcode"?value="${TJ.TaskCode}"/>
????</bean>
</beans>
3.?Config.properties文件的配置
本例中我提供一對(duì)簡(jiǎn)單的數(shù)據(jù)用于示范:
#Transaction?Journal?Task?Codes
TJ.TaskCode?=?1034,1035,1037,1038,1040,1057,1058,1074
TJ.TaskCode是鍵,1034,1035,1037,1038,1040,1057,1058,1074是值;
4.Java?Bean的定義?
定義Java?Bean?TJTaskCode.Java用于存放所需要的數(shù)值:
public?class?TJTaskCode?{
??private?String?taskcode;
??????public?void?setTaskcode(String?taskcode)?{
????????????this.taskcode?=?taskcode;
??????}
??????public?String?getTaskcode()?{
????????return?this.taskcode;
??????}
}
5.測(cè)試程序TestAccessProperties.java的執(zhí)行?
import?org.springframework.context.ApplicationContext;
import?org.springframework.context.support.ClassPathXmlApplicationContext;
import?com.td.cc.audit.impl.TJTaskCode;
public?class?TestAccessProperties?{
????public?static?void?main(String[]?args)?{
????
?????????ApplicationContext?context;????????????????????????
????????context?=?new?ClassPathXmlApplicationContext("applicationContext.xml");????????TJTaskCode?taskcode1?=?(TJTaskCode)context.getBean("tjtaskcode");
?????????String?taskcode2?=?taskcode1.getTaskcode();
?????????System.out.println(taskcode2);
????????if?(taskcode2.indexOf("1034")!=-1)?//
????????{
????????????System.out.println("Y");
????????}?else{
????????????System.out.println("N");
????????}
????}
}