`
laughingchs
  • 浏览: 69274 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

common-configuration——转载

 
阅读更多

一 使用原生方式读取配置文件 

1 文件系统加载 

Java代码  收藏代码
  1. InputStream in = new FileInputStream("config.properties");        
  2. Properties p = new Properties();  
  3. p.load(in);  


2 类加载方式 

A 与类同级目录 
Java代码  收藏代码
  1. InputStream in = Main.class.getResourceAsStream("config.properties");  

B 在类的下一级目录 
Java代码  收藏代码
  1. InputStream in =   
  2. Main.class.getResourceAsStream("resource/config.properties");  

C 指定加载资源配置文件的classes相对路径 
Java代码  收藏代码
  1. InputStream in =   
  2. Main.class.getResourceAsStream("/test/resource/config.properties");  

注意事项:如上以/开头的是指从根目录开始加载。 
D 使用类加载器的方式 
Java代码  收藏代码
  1. InputStream in = Main.class.getClassLoader().  
  2. getResourceAsStream("test/resource/config.properties");  

E 资源配置文件在classes下 
Java代码  收藏代码
  1. InputStream in =   
  2. Main.class.getClassLoader().getResourceAsStream("config.properties");  


二 使用apache提供的功能组件 
它使用了大量的apache-commons其它组件,很麻烦 
参照网上相关资料 
1 读取properties文件的方式 
示例代码 
Java代码  收藏代码
  1. import java.util.List;  
  2. import org.apache.commons.configuration.Configuration;  
  3. import org.apache.commons.configuration.ConfigurationException;  
  4. import org.apache.commons.configuration.PropertiesConfiguration;  
  5.   
  6. public class PropertiesConfigurationDemo {  
  7.   
  8.     public static void main(String[] args) throws ConfigurationException {  
  9.   
  10.         Configuration config = new PropertiesConfiguration(PropertiesConfigurationDemo.class.getResource("system-config.properties"));  
  11.         String ip = config.getString("ip");         
  12.         String[] colors = config.getStringArray("colors.pie");   
  13.         for (int i = 0; i < colors.length; i++) {  
  14.             System.out.println(colors[i]);  
  15.         }  
  16.                
  17.         List<?> colorList = config.getList("colors.pie");  
  18.         for (int i = 0; i < colorList.size(); i++) {  
  19.             System.out.println(colorList.get(i));  
  20.         }  
  21.      }  
  22. }  


配置文件代码: 

Properties代码  收藏代码
  1. ip=10.10.1.1  
  2. colors.pie = #FF0000, #00FF00, #0000FF  


2 读取XML文件的方式 

Java代码  收藏代码
  1. import java.util.List;  
  2. import org.apache.commons.configuration.Configuration;  
  3. import org.apache.commons.configuration.ConfigurationException;  
  4. import org.apache.commons.configuration.XMLConfiguration;  
  5.   
  6. public class XMLConfigurationDemo {  
  7.   
  8.     public static void main(String[] args) throws ConfigurationException {  
  9.   
  10.         Configuration config = new XMLConfiguration(XMLConfigurationDemo.class  
  11.                 .getResource("system-config.xml"));  
  12.         String ip = config.getString("ip");  
  13.         String account = config.getString("account");  
  14.         String password = config.getString("password");  
  15.         List<?> roles = config.getList("roles.role");  
  16.         System.out.println("IP: " + ip);  
  17.         System.out.println("Account: " + account);  
  18.         System.out.println("Password: " + password);          
  19.         for (int i = 0; i < roles.size(); i++) {  
  20.             System.out.println("Role: " + roles.get(i));  
  21.         }         
  22.     }  
  23. }  

Xml文件代码: 

Xml代码  收藏代码
  1. <config>  
  2.     <ip>10.10.1.1</ip>  
  3.     <account>jini</account>  
  4.     <password>jakarta99</password>  
  5.     <roles>  
  6.         <role>admin</role>  
  7.         <role>manager</role>  
  8.         <role>user</role>  
  9.     </roles>  
  10. </config>  


示例2 

Java代码  收藏代码
  1. import org.apache.commons.configuration.Configuration;  
  2. import org.apache.commons.configuration.ConfigurationException;  
  3. import org.apache.commons.configuration.XMLConfiguration;  
  4. public class XmlConfigurationExample {  
  5.     public static void main(String[] args) throws Exception,  
  6.             ConfigurationException {  
  7.         String resource = "main/global.xml";  
  8.         Configuration config = new XMLConfiguration(resource);  
  9.         // 只有new一个XMLConfiguration的实例就可以了.  
  10.         List<?> startCriteria = config.getList("start-criteria.criteria");          
  11.         for (int i = 0; i < startCriteria.size(); i++) {  
  12.             System.out.println("Role: " + startCriteria.get(i));  
  13.         }  
  14.         int horsepower = config.getInt("horsepower");  
  15.         System.out.println(horsepower);  
  16.     }  
  17. }  

global.xml文件代码 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>  
  2. <engine-config>  
  3.     <start-criteria>  
  4.         <criteria>  
  5.             Temperature Above -10 Celsius   
  6.         </criteria>  
  7.         <criteria>  
  8.             Fuel tank is not empty   
  9.        </criteria>  
  10.     </start-criteria>  
  11.     <volume>4 Liters</volume>  
  12.     <horsepower>42</horsepower>  
  13. </engine-config>  


示例3:混合读取二种文件 

Java代码  收藏代码
  1. import java.util.List;  
  2. import org.apache.commons.configuration.CompositeConfiguration;  
  3. import org.apache.commons.configuration.ConfigurationException;  
  4. import org.apache.commons.configuration.PropertiesConfiguration;  
  5. import org.apache.commons.configuration.XMLConfiguration;  
  6.   
  7. public class Test {  
  8.       
  9.     public static void main(String[] args) throws ConfigurationException {  
  10.         CompositeConfiguration config = new CompositeConfiguration();  
  11.         config.addConfiguration(new PropertiesConfiguration(  
  12.         "main/global.properties"));  
  13.         config.addConfiguration(new XMLConfiguration("main/global.xml"));  
  14.           
  15.         List<?> startCriteria = config.getList("start-criteria.criteria");  
  16.         int horsepower = config.getInt("horsepower");  
  17.         for (int i = 0; i < startCriteria.size(); i++) {  
  18.             System.out.println("Role: " + startCriteria.get(i));  
  19.         }  
  20.         System.out.println(horsepower);  
  21.         System.out.println("Speed: " + config.getFloat("speed"));  
  22.         System.out.println("Names: " + config.getString("name"));  
  23.     }  
  24. }  

Xml如上所示,global.properties文件如下: 

Properties代码  收藏代码
  1. speed=50   
  2. name=Default User  


示例4 

Java代码  收藏代码
  1. import java.net.URL;  
  2. import java.util.List;  
  3. import org.apache.commons.configuration.Configuration;  
  4. import org.apache.commons.configuration.ConfigurationFactory;  
  5.   
  6. public class PropertiesXmlConfigurationExample {  
  7.       
  8. public static void main(String[] args) throws Exception {             
  9.         ConfigurationFactory factory = new ConfigurationFactory();  
  10.         URL configURL = PropertiesXmlConfigurationExample.class.getResource("additional-xml-configuration.xml");  
  11.         factory.setConfigurationURL(configURL);  
  12.         Configuration config = factory.getConfiguration();  
  13.         List<?> startCriteria = config.getList("start-criteria.criteria");  
  14.         for (int i = 0; i < startCriteria.size(); i++) {  
  15.             System.out.println("Role: " + startCriteria.get(i));  
  16.         }  
  17.         int horsepower = config.getInt("horsepower");  
  18.         System.out.println("Horsepower: " + horsepower);  
  19.           
  20.         System.out.println("Speed: " + config.getFloat("speed"));  
  21.         System.out.println("Names: " + config.getString("name"));  
  22.           
  23.     }  
  24. }  


additional-xml-configuration.xml文件内容: 
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>   
  2. <configuration>   
  3. <properties fileName="global.properties"/>   
  4. <xml fileName="global.xml"/>   
  5. </configuration>  


相关API说明: 
# PropertiesConfiguration 从一个 property 文件中加载配置 . 
# XMLConfiguration 从 XML 文件中加载配置信息 . 
# XMLPropertyListConfiguration 也可以读取 XML 被 Mac OSX 使用变量 . 
# JNDIConfiguration 利用 jndi 树的一个键值,可以返回一个值,这个值来作为配置信息 
# BaseConfiguration 访问内存中的一个配置对象 . 
# HierarchicalConfiguration 一个在内存中的配置对象,这个对象可以处理复杂的数据结构 . 
# SystemConfiguration 一个利用系统属性的配置信息 
# ConfigurationConverter 把 java.util.Properties 或者 org.apache.collections.commons.ExtendedProperties 转化为一个 Configuration 对象 

参考资料: 
Jakarta-Common-Configuration使用笔记 
http://blog.csdn.net/kunshan_shenbin/archive/2008/01/24/2062542.as 
common-configuration读取xml,properties文件 
http://javamy.iteye.com/blog/252619 
使用apache common configuration读取配置文件或修改配置文件 
http://www.suneca.com/article.asp?id=9 

分享到:
评论

相关推荐

    官方commons-configuration-1.10的jar包

    在给定的"commons-configuration-1.10"版本中,我们可以深入探讨以下几个核心知识点: 1. **配置文件支持**:Commons Configuration 支持多种格式的配置文件,包括XML、INI、Properties和HOCON(Hadoop配置格式)。...

    Common-Configuration

    "Common-Configuration"标题所指的,可能是一个通用的配置管理库或者框架,它旨在简化开发人员从XML和properties文件中读取配置信息的过程。这个例子可能是为了展示如何有效地使用这个库或框架,帮助开发者更方便地...

    common-configuration的一些应用

    本文将围绕“common-configuration”的一些应用展开,探讨如何使用和理解这些常见的配置文件格式,以及它们在实际开发中的作用。 首先,`config.ini`是一种基于文本的配置文件,通常用于存储应用程序的设置。它采用...

    common-image-3.1.1-API文档-中文版.zip

    赠送jar包:common-image-3.1.1.jar; 赠送原API文档:common-image-3.1.1-javadoc.jar; 赠送源代码:common-image-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-image-3.1.1.pom; 包含翻译后的API文档:...

    common-io-3.1.1-API文档-中文版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    proto-google-common-protos-1.17.0-API文档-中文版.zip

    赠送jar包:proto-google-common-protos-1.17.0.jar; 赠送原API文档:proto-google-common-protos-1.17.0-javadoc.jar; 赠送源代码:proto-google-common-protos-1.17.0-sources.jar; 赠送Maven依赖信息文件:...

    commons-configuration

    "commons-configuration"这个标题和描述直接指向了这个开源项目。 **主要特性** 1. **多源配置**: Commons Configuration 支持从多种来源获取配置信息,包括XML文件、属性文件、系统属性、环境变量、甚至数据库。...

    commons-configuration-1.9.jar

    Apache Commons Configuration

    flink-table-common-1.12.7-API文档-中文版.zip

    赠送jar包:flink-table-common-1.12.7.jar; 赠送原API文档:flink-table-common-1.12.7-javadoc.jar; 赠送源代码:flink-table-common-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.12.7....

    hadoop-common-2.2.0-bin-32.rar

    hadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-bin-32.rarhadoop-common-2.2.0-...

    Effective-Robotics-Programming-with-ROS——中文学习笔记

    ### Effective Robotics Programming with ROS —— 中文学习笔记 #### 知识点一:ROS环境配置与准备工作 **1.1 安装ROS Indigo** 在开始深入学习《Effective Robotics Programming with ROS》之前,首先需要搭建...

    springfox-swagger-common-3.0.0-API文档-中文版.zip

    赠送jar包:springfox-swagger-common-3.0.0.jar; 赠送原API文档:springfox-swagger-common-3.0.0-javadoc.jar; 赠送源代码:springfox-swagger-common-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-...

    weixin-java-common-3.5.0-API文档-中文版.zip

    赠送jar包:weixin-java-common-3.5.0.jar; 赠送原API文档:weixin-java-common-3.5.0-javadoc.jar; 赠送源代码:weixin-java-common-3.5.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-common-3.5.0.pom;...

    activiti-common-rest-5.21.0-API文档-中英对照版.zip

    赠送jar包:activiti-common-rest-5.21.0.jar; 赠送原API文档:activiti-common-rest-5.21.0-javadoc.jar; 赠送源代码:activiti-common-rest-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-common-rest-...

    netty-transport-native-unix-common-4.1.68.Final-API文档-中文版.zip

    赠送jar包:netty-transport-native-unix-common-4.1.68.Final.jar; 赠送原API文档:netty-transport-native-unix-common-4.1.68.Final-javadoc.jar; 赠送源代码:netty-transport-native-unix-common-4.1.68....

    hadoop-common-2.6.0-bin-master.zip

    `hadoop-common-2.6.0-bin-master.zip` 是一个针对Hadoop 2.6.0版本的压缩包,特别适用于在Windows环境下进行本地开发和测试。这个版本的Hadoop包含了对Windows系统的优化,比如提供了`winutils.exe`,这是在Windows...

    wildfly-common-1.5.2.Final-API文档-中文版.zip

    赠送jar包:wildfly-common-1.5.2.Final.jar; 赠送原API文档:wildfly-common-1.5.2.Final-javadoc.jar; 赠送源代码:wildfly-common-1.5.2.Final-sources.jar; 赠送Maven依赖信息文件:wildfly-common-1.5.2....

    netty-common-4.1.65.Final-API文档-中英对照版.zip

    赠送jar包:netty-common-4.1.65.Final.jar; 赠送原API文档:netty-common-4.1.65.Final-javadoc.jar; 赠送源代码:netty-common-4.1.65.Final-sources.jar; 赠送Maven依赖信息文件:netty-common-4.1.65.Final....

    sentinel-transport-common-1.8.0-API文档-中文版.zip

    赠送jar包:sentinel-transport-common-1.8.0.jar; 赠送原API文档:sentinel-transport-common-1.8.0-javadoc.jar; 赠送源代码:sentinel-transport-common-1.8.0-sources.jar; 赠送Maven依赖信息文件:sentinel-...

Global site tag (gtag.js) - Google Analytics