zoukankan      html  css  js  c++  java
  • commons configuration的简单使用和说明

    Commons Configuration是一个java应用程序的配置管理工具。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。
     
    1 如果要使用configuration这个包,首先要保证使用JDK1.2以上,还要引入如下jar包 
    • commons-beanutils
    • commons-lang
    • commons-logging
    • commons-collections
    • commons-digester
    • commons-codec
    • commons-jxpath
    2 commons-configuration最新的版本是1.5,最主要的作用是读取资源文件,每一种文件格式都有一个对应的类,如下 
    • properties文件--PropertiesConfiguration类
    • xml文件--XMLConfiguration
    • .ini文件--INIConfiguration
    • .plist文件--PropertyListConfiguration
    • 还可以从JNDI中读取properties--JNDIConfiguration
    • 当然还可以使用system的properties--SystemConfiguration
    • 等等...
    资源下载地址:http://archive.apache.org/dist/commons/
    一、读取property文件demo
     package cfgtest; import org.apache.commons.configuration.*; 
    /** 
    * Commons Configuration读取属性文件的例子 

    * @author leizhimin 2008-9-23 9:40:17 
    */
     
    public class Test1 { 
            public static void main(String[] args) throws ConfigurationException { 
                    test1(); 
            } 
            public static void test1() throws ConfigurationException { 
               
                    CompositeConfiguration config = new CompositeConfiguration(); 
                    //config.addConfiguration(new SystemConfiguration()); 
                    config.addConfiguration(new PropertiesConfiguration("cfgtest/test1.properties")); 
           
                    String usernaem = config.getString("username"); 
                    String password = config.getString("password"); 
                     
                    System.out.println(usernaem + " " + password); 

            } 
    }
     
    cfgtest/test1.properties
    username = lavasoft 
    password = leizhimin 
    运行结果:
    lavasoft leizhimin 
    Process finished with exit code 0
     
    比如我们要读一个properties文件:在classpath下面建立目录te,之后在te下面建立 
    test.properties 
    Java代码  收藏代码
    1. ip=127.0.0.1  
    2. port=8080  
    3. id=111  
    4. application.name = Killer App  
    5. application.version = 1.6.2  
    6. application.title = ${application.name} ${application.version}  
    7. keys=cn,com,org,uk,edu,jp,hk  

    java: 
    Java代码  收藏代码
    1. //注意路径默认指向的是classpath的根目录  
    2. Configuration config = new PropertiesConfiguration("te/test.properties");  
    3. String ip=config.getString("ip");  
    4. int port=config.getInt("port");  
    5. String title=config.getString("application.title");  
    6. //再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中  
    7. //你就可以为它设置默认值。比如下面这个例子就会在test.properties这个文件中找id的值,如果找不到就会给id设置值为123  
    8. //这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。  
    9. Integer id=config.getInteger("id", new Integer(123));  
    10. //如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk  
    11. //可以实用下面的方式读取:  
    12. String[] keys1=config.getStringArray("keys");  
    13.     List keys2=config.getList("keys");  
    首先要把这个文件读到程序中,我们可以用上面的类,所有的读取文件的类都 继承自AbstractConfiguration类, 
    而这个类实现了Configuration接口,如果我们只有比较简单的需求,那么可以直接向上转型为Configuration类型,如果向上 
    转型为AbstractConfiguration类,那么可以做一些配置工作。 
    比如刚刚看到的 keys=cn,com,org,uk,edu,jp,hk这个例子中如果是keys=cn/com/org/uk/edu/jp/hk 
    那么如果还按照原来的方式读取,读到的将是"cn/com/org/uk/edu/jp/hk"这个字符串,所以要先改变分割符之后在读 
    即 
    Java代码  收藏代码
    1. AbstractConfiguration.setDefaultListDelimiter('/');  
    2. Configuration config = new PropertiesConfiguration("te/Vasp.properties");  
    3. String[] keys=config.getStringArray("keys");  
    4. List key2=config.getList("keys");  
    如果你看它的源码,你会在 AbstractConfiguration这个类中找到: 
    Java代码  收藏代码
    1. private static char defaultListDelimiter = ',';  
    这下你明白了吧!
     

    三、解析XML配置文件

    XML配置文件内容: 

    Xml代码  收藏代码
    1. <engine-config>  
    2.   
    3.     <start-criteria>  
    4.   
    5.         <criteria type="critical">  
    6.   
    7.             Temperature Above -10 Celsius  
    8.   
    9.         </criteria>  
    10.   
    11.         <criteria>  
    12.   
    13.             Fuel tank is not empty  
    14.   
    15.         </criteria>  
    16.   
    17.     </start-criteria>  
    18.   
    19.     <name>  
    20.   
    21.         <first>Tom</first>  
    22.   
    23.         <last>Payne</last>  
    24.   
    25.     </name>  
    26.   
    27.     <horsepower>42</horsepower>  
    28.   
    29. </engine-config>  

     这个XML配置文件的内容可以被commons 提供的的的DOMConfiguration类加载, DOMConfiguration类使用Xerces XML 解析器把全部的XML文件解析为DOM 文件,,可以参照下面的实现:

    Java代码  收藏代码
    1. import org.apache.commons.configuration.Configuration;  
    2.   
    3. import org.apache.commons.configuration.DOMConfiguration;  
    4.   
    5.   
    6.   
    7. String resource = "com/discursive/jccook/configuration/global.xml";  
    8.   
    9. Configuration config = new DOMConfiguration(resource);  
    10.   
    11.           
    12.   
    13. // Retrieve a list of all Criteria elements  
    14.   
    15. List startCriteria = config.getList("start-criteria.criteria");  
    16.   
    17.   
    18.   
    19. // Retrieve the value of the first criteria element  
    20.   
    21. String firstCriteria = config.getString("start-criteria.criteria(0)");  
    22.   
    23.   
    24.   
    25. // Retrieve the type attribute of the first criteria element  
    26.   
    27. String firstCriteriaType = config.getString("start-criteria.criteria(0)[@type]");  
    28.   
    29.   
    30.   
    31. // Retrieve the horsepower as an int  
    32.   
    33. int horsepower = config.getInt("horsepower");  

    传一个字符串作为DOMConfiguration 构造方法的参数,DOMConfiguration从类路径中装这载XML文件作为一种资源,如果你需要从file对象中装载XML配置文件,你可以传File object.

    DOMConfiguration仅在Xerves XML parser有用的时候(即在类编译路径中有相关类)时可用,如果没有这个JAR包,我们可以利用XMLConfiguration另外的实现类:DOM4JConfiguration,这两种方法使用DOM4J来解析XML文件,当然,这时你需要配置DOM4J的包。

  • 相关阅读:
    AndroidManifest.xml文件详解(uses-feature) (转载)
    两分钟彻底让你明白Android Activity生命周期(图文)! (转载)
    android studio学习----添加项目依赖包补充---添加github上的开源项目为库
    android studio学习----添加项目依赖包总结
    android studio学习----如何创建一个库项目
    android studio学习----添加项目库
    android studio学习----通过libs来导入jar包
    android studio学习----通过gradle来导入jar包
    android studio学习----gradle配置
    android studio学习----构建(gradle )依赖时使用动态依赖的问题
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4650556.html
Copyright © 2011-2022 走看看