- 浏览: 582895 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (174)
- JBPM (3)
- WWF (0)
- JavaScript (11)
- J2EE (40)
- OperationSystem (11)
- 数据库 (12)
- CSS (1)
- Ajax (2)
- J2SE (30)
- Tools (10)
- 服务器中间件 (3)
- 异常 (0)
- Flex (5)
- jQuery (11)
- html (9)
- Ejb (1)
- HTML5 Shiv–让该死的IE系列支持HTML5吧 (1)
- Spring (9)
- Quartz (3)
- log4j (1)
- maven (1)
- cpdetector (1)
- JSON (1)
- log4jdbc (1)
- asm (8)
- FusionCharts (1)
- jqplot (1)
- highcharts (1)
- excanvas (1)
- html5 (1)
- jpcap介绍 (1)
- weblogic (3)
- URLURLClassLoader (0)
- URLClassLoader (1)
- ant (2)
- ivy (2)
- nexus (1)
- IT (0)
- LoadRunner (1)
- SCSS (1)
- ruby (1)
- webstorm (1)
- typescript (1)
- Jboss7 (1)
- wildfly (1)
- oracle (5)
- esb (0)
- dubbo (2)
- zookeeper (3)
- eclipse (1)
- Android (2)
- Studio (1)
- Google (1)
- 微信 (1)
- 企业号 (1)
- Linux (13)
- Oracle12c (1)
- Hadoop (1)
- InletexEMC (1)
- Windows (1)
- Netty (3)
- Marshalling (2)
- Protobuf (1)
- gcc (1)
- Git (1)
- GitLab (1)
- shell (2)
- java (3)
- Spring4 (1)
- hibernate4 (1)
- postgresql (1)
- ApacheServer (2)
- Tomcat (2)
- ApacheHttpServer (2)
- realvnc (1)
- redhat (7)
- vncviewer (1)
- LVS (4)
- LVS-DR (1)
- RedHat6.5 (5)
- LVS-NAT (1)
- LVS-IPTUNNEL (2)
- LVS-TUN (1)
- keepalived (2)
- yum (1)
- iso (1)
- VMware (1)
- redhat5 (1)
- ha (1)
- nginx (2)
- proguard (1)
- Mat (1)
- DTFJ (1)
- axis2 (1)
- web service (1)
- centos (1)
- random (1)
- urandom (1)
- apache (1)
- IBM (1)
- cve (1)
- 漏洞 (1)
- JDBC (1)
- DataSource (1)
- jdk (1)
- tuxedo (2)
- wtc (1)
最新评论
-
skying007:
好资料,谢谢分享给啊
FusionCharts在服务器端导出图片(J2EE版) -
cgnnzg:
大神好 可以发一份源码给我学习么 多谢了 978241085 ...
springmvc+dubbo+zookeeper -
jifengjianhao:
求源码:854606899@qq.com
springmvc+dubbo+zookeeper -
wdloyeu:
shihuan8@163.com邮箱网盘在哪,没找到。能给份源 ...
Java Socket长连接示例代码 -
huangshangyuanji:
求代码:45613032@qq.com
springmvc+dubbo+zookeeper
此程序依赖commons-configuration-1.6.jar和commons-lang-2.6.jar两个jar包。
需要先在工程的src目录下建立如下几个文件:
config.properties代码:
configiiff.properties代码:
xmltest.xml代码:
database.xml代码:
config.ini代码:
【注】:这里要简单介绍一下ini文件的格式,; 开头的是注释内容,每个[]是一个section,每个section下面有多个键值对。
TestConfiguration.java代码如下:
需要先在工程的src目录下建立如下几个文件:
config.properties代码:
ip = 127.0.0.1 port = 8081 id = 111 application.name = Killer App application.version = 1.6.2 application.title = ${application.name} ${application.version} keys = cn,com,org,uk,edu,jp,hk enname = include = configiiff.properties
configiiff.properties代码:
keysh = cn/com/org/uk/edu/jp/hk myname =shihuan
xmltest.xml代码:
<?xml version="1.0" encoding="UTF-8"?> <gui-definition> <colors> <background>#808080</background> <text>#000000</text> <header>#008000</header> <link normal="#000080" visited="#800080"/> <default>${colors.header}</default> </colors> <rowsPerPage>15</rowsPerPage> <buttons> <name>OK,Cancel,Help</name> <name>Yes,No,Cancel</name> </buttons> <numberFormat pattern="###\,###.##"/> </gui-definition>
database.xml代码:
<?xml version="1.0" encoding="UTF-8"?> <database> <tables> <table tableType="system"> <name>users</name> <fields> <field> <name>uid</name> <type>long</type> </field> <field> <name>uname</name> <type>java.lang.String</type> </field> <field> <name>firstName</name> <type>java.lang.String</type> </field> <field> <name>lastName</name> <type>java.lang.String</type> </field> <field> <name>email</name> <type>java.lang.String</type> </field> </fields> </table> <table tableType="application"> <name>documents</name> <fields> <field> <name>docid</name> <type>long</type> </field> <field> <name>name</name> <type>java.lang.String</type> </field> <field> <name>creationDate</name> <type>java.util.Date</type> </field> <field> <name>authorID</name> <type>long</type> </field> <field> <name>version</name> <type>int</type> </field> </fields> </table> </tables> </database>
config.ini代码:
; last modified 28 April 2011 by ShiHuan [owner] name=ShiHuan organization=Acme Products [database] server=192.168.2.67 ; use IP address in case network name resolution is not working port=1521
【注】:这里要简单介绍一下ini文件的格式,; 开头的是注释内容,每个[]是一个section,每个section下面有多个键值对。
TestConfiguration.java代码如下:
import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Set; import org.apache.commons.configuration.AbstractConfiguration; import org.apache.commons.configuration.AbstractFileConfiguration; import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.INIConfiguration; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.XMLConfiguration; import org.apache.log4j.Logger; public class TestConfiguration { static Logger logger = Logger.getLogger(TestConfiguration.class); public static void readProperties(){ //注意路径默认指向的是classpath的根目录 Configuration config = null; try { config = new PropertiesConfiguration("config.properties"); String ip = config.getString("ip"); System.out.println(ip); int port = config.getInt("port"); System.out.println(port); String title = config.getString("application.title"); System.out.println(title); //再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中 //你就可以为它设置默认值。比如下面这个例子就会在test.properties这个文件中找id的值,如果找不到就会给id设置值为123 //这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。 Integer id = config.getInteger("id", new Integer(123)); System.out.println(id); // config.setProperty("enname", "Hello"); // ((AbstractFileConfiguration) config).save(); ((AbstractFileConfiguration) config).isAutoSave(); config.setProperty("enname", "Hello"); String emmname = config.getString("enname"); System.out.println(emmname); //如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk //可以实用下面的方式读取: String[] keys1 = config.getStringArray("keys"); for(int i=0; i<keys1.length; i++){ System.out.println(keys1[i]); } System.out.println(); System.out.println(); List keys2 = config.getList("keys"); for (Iterator iterator = keys2.iterator(); iterator.hasNext();) { String strKeys = (String) iterator.next(); System.out.println(strKeys); } String myname = config.getString("myname"); System.out.println(myname); } catch (ConfigurationException e) { logger.error(e.getMessage()); } } public static void readPropertieshh(){ try { AbstractConfiguration.setDefaultListDelimiter('/'); //设置指定分隔符 Configuration config = new PropertiesConfiguration("configiiff.properties"); String[] keys1 = config.getStringArray("keysh"); for(int i=0; i<keys1.length; i++){ System.out.println(keys1[i]); } System.out.println(); System.out.println(); List keys2 = config.getList("keysh"); for (Iterator iterator = keys2.iterator(); iterator.hasNext();) { String strKeys = (String) iterator.next(); System.out.println(strKeys); } } catch (ConfigurationException e) { logger.error(e.getMessage()); } } public static void readXml(){ try { XMLConfiguration config = new XMLConfiguration("xmltest.xml"); /** *<colors> * <background>#808080</background> * <text>#000000</text> * <header>#008000</header> * <link normal="#000080" visited="#800080"/> * <default>${colors.header}</default> *</colors> *这是从上面的xml中摘抄的一段,我们现在来解析它, *colors是根标签下的直接子标签,所以是顶级名字空间 */ String backColor = config.getString("colors.background"); System.out.println(backColor); String textColor = config.getString("colors.text"); System.out.println(textColor); //现在我们知道了如何读取标签下的数据,那么如何读标签中的属性呢?看下面 //<link normal="#000080" visited="#800080"/> String linkNormal = config.getString("colors.link[@normal]"); System.out.println(linkNormal); //还支持引用呢! //<default>${colors.header}</default> String defColor = config.getString("colors.default"); System.out.println(defColor); //也支持其他类型,但是一定要确定类型正确,否则要报异常哦 //<rowsPerPage>15</rowsPerPage> int rowsPerPage = config.getInt("rowsPerPage"); System.out.println(rowsPerPage); //加属性 config.addProperty("shihuan", "shihuan"); config.addProperty("updatehala", "updatehala"); System.out.println(config.getString("shihuan")); System.out.println(config.getString("updatehala")); //获得同名结点的集合 List buttons = config.getList("buttons.name"); for(Object button : buttons){ System.out.println(button.toString()); } System.out.println(); System.out.println(); //取消分隔符 XMLConfiguration configList = new XMLConfiguration(); configList.setDelimiterParsingDisabled(true); configList.setFileName("xmltest.xml"); configList.load(); List buttonsList = configList.getList("buttons.name"); for(Object buttonList : buttonsList){ System.out.println(buttonList.toString()); } //更复杂的xml文件 XMLConfiguration configXml = new XMLConfiguration(); configXml.setDelimiterParsingDisabled(true); configXml.setFileName("database.xml"); configXml.load(); Object prop = configXml.getProperty("tables.table.name"); if(prop instanceof Collection) { System.out.println("Number of tables: " + ((Collection) prop).size()); } //return users System.out.println(configXml.getProperty("tables.table(0).name")); //return system System.out.println(configXml.getProperty("tables.table(0)[@tableType]")); //return documents System.out.println(configXml.getProperty("tables.table(1).name")); //return null,因为只有两个table所以这个值为null System.out.println(configXml.getProperty("tables.table(2).name")); //return [docid, name, creationDate, authorID, version] //如果所要找的节点不存在唯一值,则返回Collection类型 System.out.println(configXml.getProperty("tables.table(1).fields.field.name")); //[long, long] //与上面的相同,返回值不唯一 System.out.println(configXml.getProperty("tables.table.fields.field(0).type")); //return creationDate System.out.println(configXml.getProperty("tables.table(1).fields.field(2).name")); } catch (ConfigurationException e) { logger.error(e.getMessage()); } } public static void readIni(){ try { INIConfiguration config = new INIConfiguration("config.ini"); String basestr = config.getBasePath(); System.out.println(basestr); String filestr = config.getFileName(); System.out.println(filestr); String pathstr = config.getPath(); System.out.println(pathstr); Set zykhstr = config.getSections(); for(Object setVal : zykhstr){ System.out.println(setVal.toString()); } System.out.println(); System.out.println(); for(Iterator iter = config.getKeys(); iter.hasNext();){ System.out.println(iter.next().toString()); System.out.println(config.getString(iter.next().toString())); } } catch (ConfigurationException e) { logger.error(e.getMessage()); } } /** * @param args */ public static void main(String[] args) { // TestConfiguration.readProperties(); // TestConfiguration.readPropertieshh(); // TestConfiguration.readXml(); TestConfiguration.readIni(); } } //笔者在实际工作中封装好的类如下: import org.apache.commons.configuration.CompositeConfiguration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; /** * Created with IntelliJ IDEA. * User: yushibo * Date: 12-9-4 * Time: 上午10:06 * To change this template use File | Settings | File Templates. */ public class PropertiesUtil { /** * 获取某个properties文件中的某个key对应的value值 * @param fileName * @param key * @return 返回key说对应的value值 * */ public static String getPropertiesValue(String fileName, String key){ CompositeConfiguration config = new CompositeConfiguration(); PropertiesConfiguration pc = null; try { pc = new PropertiesConfiguration(fileName); config.addConfiguration(pc); String filevalue = config.getString(key).trim(); return filevalue; } catch (ConfigurationException e) { e.printStackTrace(); } return null; } /** * 获取某个properties文件中的某个key对应的value值(值是个数组) * @param fileName * @param key * @param delimiter * @return 返回key说对应的value数组值(使用时遍历数组值后要加.trim()) * */ public static String[] getPropertiesValues(String fileName, String key, char delimiter){ CompositeConfiguration config = new CompositeConfiguration(); PropertiesConfiguration pc = null; try { if(!Character.isWhitespace(delimiter)){ AbstractConfiguration.setDefaultListDelimiter(delimiter); } pc = new PropertiesConfiguration(fileName); config.addConfiguration(pc); String[] filevalues = config.getStringArray(key); return filevalues; } catch (ConfigurationException e) { e.printStackTrace(); } return null; } }
- TestCommonsConfiguration.rar (4.2 KB)
- 下载次数: 35
发表评论
-
Spring4Mvc整合Hibernate4框架示例
2016-02-05 11:52 1403今天用NetBeans8.1搭建了一套Spring4MVC+H ... -
Spring4配置properties文件的一点儿细节
2016-02-04 15:40 2806http://repo.spring.io/release/o ... -
JavaWeb发送信息到微信公众平台的企业号
2015-11-01 22:42 3807首先到微信公众平台申请微信企业号: https://qy.we ... -
springmvc+dubbo+zookeeper
2015-09-22 11:34 12035笔者这里使用的是apache- ... -
OracleAS10g安装配置与部署
2015-07-01 20:59 712先到Oracle官方下载OracleAS10的安装包,截图如下 ... -
java和spring使用weblogic数据源配置
2014-10-13 11:29 3034需要weblogic.jar和jrmpclient.jar ... -
一套基本的SpringMvc工程所需要的最基本jar包(pom.xml)
2014-08-19 16:38 1916附件里是pom.xml文件。 -
html的form表单提交得不到参数问题
2014-07-25 16:13 1864今天同事问我他的form表单按submit方式提交,在Java ... -
Spring3Mvc导出PDF的3种形式+导出excel的两种形式(exportAnimal.do)
2014-07-19 22:55 1146附件里SpringMvc导出PDF和Excel的示例代码。 ... -
Java利用中国网建SMS短信通平台发送手机短信
2014-04-26 21:55 2248JAVA发送手机短信,流传有几种方法: (1)使用webser ... -
在Java中发送电子邮件
2014-04-26 18:42 9613要先申请一个网易的126邮箱和一个新浪的com邮箱。 以下程 ... -
cpdetector_1.0.10_binary下载
2014-03-26 20:53 1045附件里是cpdetector_1.0.10_binary.ra ... -
在Java代码中用Axis2调用DotNet语言的WebService程序
2014-02-19 15:19 2583package com.shihuan.ymail.com ... -
SpringMvc多语言配置
2014-01-14 16:01 14436applicationContext.xml文件中加入如下代码 ... -
log4j多级别多输出文件的配置
2013-07-22 21:28 1578以下代码需要log4j-1.2.17.jar的支持。 B ... -
mysql和Oracle在对clob和blob字段的处理
2012-08-25 18:50 30920一、MySQL与Oracle数据库如何处理Clob,Bl ... -
Spring3Mvc+Hibernate整合Axis2发布WebService并配置Quartz调度
2012-08-05 12:54 2220附件里是笔者的源代码,相关的jar包在笔者的abcdef的16 ... -
Lucene案例
2012-06-10 15:15 2612IndexerMmseg4j.java代码如下: import ... -
Mina入门程序
2012-06-02 15:05 1154附件里是Mina的入门程序。 http://mina.apa ... -
让Hibernate的执行语句看见完整参数
2012-04-29 10:09 1048http://www.ibm.com/developerwor ...
相关推荐
在实际应用中,Apache Commons Configuration 可以广泛应用于服务器配置、Web应用程序、桌面应用等各个领域,极大地提高了开发效率和代码的可维护性。通过使用这个库,开发者可以专注于实现业务逻辑,而不用过多关心...
在压缩包文件名称"Common-Configuration_Test"中,“Test”通常表示这是一个测试文件或者测试目录,可能包含了一些示例代码、测试用例或者单元测试,用于验证“Common-Configuration”的功能是否正常工作。...
2. **动态更新**:不同于传统的配置文件只能在应用启动时读取,Commons Configuration 允许在运行时监测配置文件的变化,并自动更新配置,无需重启应用。 3. **配置合并**:可以将多个配置源组合在一起,形成一个...
使用"Hadoop-common-0.23.8.jar",开发者和数据分析师能够构建和运行各种Hadoop应用,实现大数据的存储、处理和分析。在实际应用中,这个jar文件通常会与Hadoop的其他组件一起部署,共同构成一个完整的Hadoop集群。 ...
其核心思想是解耦日志实现和应用程序,使得开发者可以自由选择喜欢的日志实现,如`log4j`、`java.util.logging`或`SimpleLog`等。 `log4j2`是`log4j`的升级版,是一个功能强大且性能高效的日志框架,提供了丰富的...
动机:至少过去四年来我一直在使用nginx,我实际上为30多家公司和初创公司的数百种设置进行了配置:站点,应用程序,websocket,代理,负载平衡,从几千个rps等等。我对感到有点失望。 最后一滴是:该文章未提供完整...
在SpringBoot应用中,可以使用`@Configuration`和`@EnableScheduling`注解,配合`@Bean`来实现: ```java import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Trigger; import org....
在"zhiyubujian-common-starter"中,我们可以预见到一些常见的功能模块,比如: 1. **配置模块**:提供了一套统一的配置方式,可能包含自动配置(Auto Configuration)和自定义配置(Custom Configuration)。自动...
在`azure-common`库中,还有许多其他的辅助类和函数,如`AzureHttpError`用于处理HTTP请求中的异常,`CloudError`用于处理Azure服务返回的错误,以及`Configuration`类用于管理配置设置。 此外,`azure-common`库还...
《util-jvm_2.9.2-6.13.2.zip与common-configuration.zip在开源项目中的应用解析》 在IT行业中,开源项目扮演着至关重要的角色,它们为开发者提供了丰富的工具和资源,降低了软件开发的门槛,提高了开发效率。本篇...
标题 "common-jars.zip" 提供的信息表明这是一个包含与MyBatis框架相关的Java库的压缩文件。描述中提到的 "commons-dbcp.jar" 和 "commons-pool.jar" 是两个重要的组件,它们在MyBatis中用于数据库连接池管理。下面...
通过使用`aws-cdk.aws-autoscaling-common`库,开发人员可以更高效地编写和维护与AWS Auto Scaling相关的基础设施代码,提高生产力,并确保应用的弹性与可靠性。同时,由于它基于Python,开发者可以利用Python的强大...
1. **配置日志实现**:通过系统属性(如`java.util.logging.config.file`或`log4j.configuration`)或者在类路径下放置对应的配置文件,指定日志实现及其配置。 2. **获取Log实例**:通过`LogFactory.getLog(Class...
本主题将详细探讨如何使用`common-configuration`、`slf4j`和`logback`组件来实现这一目标。 `common-configuration`是一个通用的配置管理框架,它允许开发人员将配置信息从代码中分离出来,存储在外部文件中,如...
6. **commons-configuration-1.6.jar**: 提供了灵活的配置管理机制,支持从多种来源(如 XML、属性文件、系统环境变量等)读取配置信息,使得应用的配置更加动态和易于管理。 7. **commons-net-3.0.1.jar**: 包含了...
Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互。在这个教程中,我们将逐步介绍如何搭建 Hibernate 框架,并进行基本的数据库操作。 **一、Hibernate 概述** ...
9. **Spring框架集成**:如果项目使用Spring框架,那么数据库连接可能通过Spring的`@Configuration`和`@Bean`注解来配置,或者利用Spring Data JPA、MyBatis等ORM框架简化数据访问。 10. **安全性**:考虑到数据...
Commons-Configuration 工具对各种各式的配置和参考文件提供读取帮助. Daemon 一种 unix-daemon-like java 代码的替代机制 DBCP Commons-DBCP 提供数据库连接池服务 DbUtils DbUtils 是一个 JDBC helper 类库,...
总结,"spring-common-test"是Spring Framework中不可或缺的测试工具集,它极大地简化了Spring应用的测试工作,提高了测试的效率和质量。通过理解和熟练运用这些工具,开发者能够更好地实现高质量的代码,保证软件的...