使用apache common configuration读取配置文件或修改配置文件
作者:admin 日期:2007-11-21
最近在做项目的时候,需要在页面上显示系统的配置信息并且允许用户通过WEB交互方式修改配置文件。
刚刚开始想采用数据库,但是这样子不太好,就一个配置信息也写进数据库,写入数据库也就一条记录而已, 有点浪费了。
后来,决定采用xml来记录这个配置文件。在网上无意间发现,原来apache的common项目下面有一个子项目叫configuration, 可以读取properties,xml等文件,并且还提供了修改,新建配置文件等功能。
可能用多了apache,总觉得apache的东西就是好,也懒得去通过dom或sax来做这一方面的工作了,解析也是痛苦的事情,对于我这个经验不丰富的人来讲。最后决定采用它。
上apache,下载了一个最新版本1.1。
注意:configuration里面使用了common collections新的类,最新版本是3.1,所以还需要更新一下工程的库
项目采用的是XML文件的配置,部分XML配置大概如下:
<mung-frog-config>
<mail>
<mailhost>mail.suneca.com</mailhost>
<mailuser>admin</mailuser>
<mailpassword>123456</mailpassword>
<mailsubject>suneca mung frog code generation project</mailsubject>
<mailtemplate>/WEB-INF/pages/common/mail_template.html</mailtemplate>
</mail>
</mung-frog-config>
读取配置文件的代码如下:
XMLConfiguration config = new XMLConfiguration();
//得到当前配置文件的路径
String path = new File("resource/mungfrog.cfg.xml").getAbsolutePath();
File file = new File(path);
config.setFile(file);
config.load();
System.out.println(config.getProperty("mail.mailhost"));
System.out.println(config.getProperty("mail.mailuser"));
System.out.println(config.getProperty("mail.mailpassword"));
保存配置文件,假设现在需要增加一个抄送人的配置,代码片断:
XMLConfiguration config = new XMLConfiguration();
//得到当前配置文件的路径
String path = new File("resource/mungfrog.cfg.xml").getAbsolutePath();
File file = new File(path);
config.setFile(file);
config.load();
config.addProperty("mail.mailcc","yuzhechen@msn.com");
config.save();
生成的配置件:
<mung-frog-config>
<mail>
<mailhost>mail.suneca.com</mailhost>
<mailuser>admin</mailuser>
<mailpassword>123456</mailpassword>
<mailsubject>suneca mung frog code generation project</mailsubject>
<mailtemplate>/WEB-INF/pages/common/mail_template.html</mailtemplate>
<mailcc>yuzhechen@msn.com</mailcc>
</mail>
</mung-frog-config>
注意,XMLConfiguration当中有一个方法是addProperty(String str,Object obj);
如果增加配置信息是采用这个方法,不管你当前配置文件当中有没有这一项配置,都会增加这一项。
在使用这个工具的时候发现一个问题,如果XMLConfiguration不是通过一个File来load,在保存配置文件的时候会报一个空指针的异常
例如:
InputStream is = loader.getResourceAsStream("mungfrog.cfg.xml");
config.load(is);
config.addProperty("mail.mailcc","yuzhechen@msn.com");
config.save();
这此会报一个空指针的异常,因为file找不到,为什么会有这样的问题呢?我也不知道,问apache吧!可能是BUG吧,我也只能这么说。
还有,如果你的开发工具用的是JBUILDER,读取没有问题,但是,保存配置的时候,它都会在project home生成一个新的配置文件,郁闷,
为什么会有这样的问题呢?原因就是jbuilder认为project home就是工程的根路径。
星期六, 8月 20, 2011
使用apache common configuration读取配置文件或修改配置文件
版权所有,欢迎转载,转载请注明转自http://www.suneca.com
程序代码
<?xml version="1.0" encoding="UTF-8"?>
程序代码
//新建一个xml configuration类
程序代码
//新建一个xml configuration类
程序代码
<?xml version="1.0" encoding="UTF-8"?>
程序代码
ClassLoader loader = MungFrogConfig.class.getClassLoader();
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言