`
laughingchs
  • 浏览: 67941 次
  • 性别: 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 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics