分享
 
 
 

使用 Configuration

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

原文地址:http://jakarta.apache.org/commons/configuration/overview.html

使用 Configuration

看下面的例子可以尽快学会怎样使用Configuration ,接下来开始示范怎样从多根不同来源获取配置。

Configuration Sources配置文件

Currently there are quite a number of different sources of Configuration objects. But,

现在有很多种配置信息的来源,通过象 XMLConfiguration 或者JNDIConfiguration的类型来使用一个Configuration 对象,获得配置信息的底层细节是透明的. 这些配置信息的来源有:

PropertiesConfiguration 从 properties文件中加载配置信息。.

BaseConfiguration 直接在内存中生成配置信息的方法。

XMLConfiguration 从xml文件中获取配置信息。.

JNDIConfiguration 通过JNDI树来使用属性关键词,可以当作配置属性值。

ConfigurationConverter 读取java.util.Properties 或者o.a.c.collections.ExtendedProperties 并把它们转换成一个 Configuration 对象.

混合的配置源

你常常需要提供一个配置信息的基本设置,并且允许用户根据自己的特定环境很方便的修改它们。一种方法是在代码中对默认值使用硬编码写死,同时提供一个property文件来来覆盖默认值。这是一种很死板的做法. 取而代之的是, 通过CompositeConfiguration 你可以提供多种设置配置信息的途径。 你可以手工来实现(请参考JUnit testcase "TestCompositeConfiguration.java),也可以借助ConfigurationFactory 来完成。

通过 ConfigurationFactory, (请参考 the Junit testcase "TestConfigurationFactory.java") 加载一个可以区别各种 Configuration 对象的摘要xml文件. 下面是一个配置文件示例digesterRules.xml file:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<configuration>

<jndi className="org.apache.commons.configuration.JNDIConfiguration" prefix="java:comp/env"/>

<properties className="org.apache.commons.configuration.PropertiesConfiguration" fileName="conf/test.properties"/>

<xml className="org.apache.commons.configuration.XMLConfiguration" fileName="conf/test.xml"/>

</configuration>

这个文件声明了需要加载所有在java:comp/env下的JNDI键值对,还有一个properties文件conf/test.properties ,以及一个xml文件conf/test.xml。请阅读测试用例和conf/ 目录下的文件来获得更多的关于怎么构造配置文件的信息。

加载配置的优先级是从第一个配置开始直到最后一个。因此在上面这个例子中.假设有一个叫 "test.precendence "的JNDI 键值对 ,在xml文件里也有一个叫 "test.precendence ",的键值对那么来自 JNDI的对应值被优先返回,而不会是在xml文件里的这个值。 这样就允许你覆盖通过在一个 properties/xml file,中设置默认值,而通过JNDI或者另外的XML/properties文件来覆盖默认值!!!

配置细节

Configuration is done by taking the configuration XML file and using included Digester rules, parsing the individual configurations. Make sure to include the various dependencies required for each type of configuration!

典型的 Properties 文件

<properties className="org.apache.commons.configuration.PropertiesConfiguration" fileName="conf/test.properties"/>

这个配置描述很简单,你只需要说明property文件的路径即可.

XML属性文件

<xml className="org.apache.commons.configuration.XMLConfiguration" fileName="conf/test.xml"/>

这个配置和典型的 properties 文件很相似. 然而, xml文件必须满足特定的格式,当前xml文件没有DTD.约束。

<baseElement>

<element>value</element>

<element2>

<subelement>

<subsubelement>I'm complex!</subsubelement>

</subelement>

</element2>

<test>

<short>8</short>

</test>

</baseElement>

在上面的例子中,根元素是被忽略掉的。 因此要得到“8”这个值,你应该从配置中通过键值对“test.short”来获取,根元素可以使用任意值。

JNDI Properties File

<jndi className="org.apache.commons.configuration.JNDIConfiguration" prefix="java:comp/env"/>

在例如设置邮件服务器这样的特定环境使用这个配置非常有用! 下面的前缀告诉了ConfigurationFactory 获取你的设置的根节点。

<env-entry>

<env-entry-name>smtp</env-entry-name>

<env-entry-value>127.0.0.1</env-entry-value>

<env-entry-type>java.lang.String</env-entry-type>

</env-entry>

<env-entry>

<env-entry-name>test/short</env-entry-name>

<env-entry-value>80</env-entry-value>

<env-entry-type>java.lang.Short</env-entry-type>

</env-entry>

注意! 如果你有一个叫"test.short"的属性,如果使用了空格在里面,将被转换成 键值对"test/short". 因此,你不能给在来自JNDI的属性名字里使用空格! 如果你需要使用到这样的键值对, 请确信你把web.xml里的“.”,转换成了“/”,同上面的例子一样。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有