这是一个读取配置文件的工具包。
下载地址 : http://commons.apache.org/configuration/
A.读取XML配置文件:
10.10.1.1 jini jakarta99 admin manager user
测试代码:
package demo;import java.util.List;import org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.XMLConfiguration;public class XMLConfigurationDemo ...{ public static void main(String[] args) throws ConfigurationException ...{ Configuration config = new XMLConfiguration(XMLConfigurationDemo.class .getResource("/demo/system-config.xml")); String ip = config.getString("ip"); String account = config.getString("account"); String password = config.getString("password"); List roles = config.getList("roles.role"); System.out.println("IP: " + ip); System.out.println("Account: " + account); System.out.println("Password: " + password); System.out.println("★★★★★ Roles Begin ★★★★★"); for (int i = 0; i < roles.size(); i++) ...{ System.out.println("Role: " + roles.get(i)); } System.out.println("★★★★★ Roles End ★★★★★"); }}
B.读取Properties配置文件:
ip=10.10.1.1account=jinipassword=jakarta99role1=adminrole2=managerrole3=usercolors.pie = #FF0000, #00FF00, #0000FF
测试代码:
package demo;import java.util.List;import org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.PropertiesConfiguration;public class PropertiesConfigurationDemo ...{ public static void main(String[] args) throws ConfigurationException ...{ Configuration config = new PropertiesConfiguration( PropertiesConfigurationDemo.class .getResource("/demo/system-config.properties")); String ip = config.getString("ip"); String account = config.getString("account"); String password = config.getString("password"); String role1 = config.getString("role1"); String role2 = config.getString("role2"); String role3 = config.getString("role3"); System.out.println("IP: " + ip); System.out.println("Account: " + account); System.out.println("Password: " + password); System.out.println("★★★★★ Roles Begin ★★★★★"); System.out.println("Role1: " + role1); System.out.println("Role2: " + role2); System.out.println("Role3: " + role3); System.out.println("★★★★★ Roles End ★★★★★"); String[] colors = config.getStringArray("colors.pie"); System.out.println("★★★★★ Use StringArray Begin ★★★★★"); for (int i = 0; i < colors.length; i++) ...{ System.out.println(colors[i]); } System.out.println("★★★★★ Use StringArray End ★★★★★"); List colorList = config.getList("colors.pie"); System.out.println("★★★★★ Use List Begin ★★★★★"); for (int i = 0; i < colorList.size(); i++) ...{ System.out.println(colorList.get(i)); } System.out.println("★★★★★ Use List End ★★★★★"); }}
C.常见的配置资源
# PropertiesConfiguration 从一个 property 文件中加载配置 .
# XMLConfiguration 从 XML 文件中加载配置信息 .
# PropertyListConfiguration 从一个 .plist 文件中加载配置信息 . XMLPropertyListConfiguration 也可以读取 XML 被 Mac OSX 使用变量 .
# JNDIConfiguration 利用 jndi 树的一个键值,可以返回一个值,这个值来作为配置信息
# BaseConfiguration 访问内存中的一个配置对象 .
# HierarchicalConfiguration 一个在内存中的配置对象,这个对象可以处理复杂的数据结构 .
# SystemConfiguration 一个利用系统属性的配置信息
# ConfigurationConverter 把 java.util.Properties 或者 org.apache.collections.commons.ExtendedProperties 转化为一个 Configuration 对象
D.混合使用多种资源
经常你希望提供一套基本的配置信息,而且允许用户很容易的根据他们的特有的环境覆盖他们。
一种办法就是载你的代码中队默认值进行硬编码,并且提供一个配置文件来覆盖他们。 这是做法没有一点弹性。替换做法是:运用 CompositeConfiguration 。
CompositeConfiguration config = new CompositeConfiguration();config.addConfiguration(new SystemConfiguration());config.addConfiguration(new PropertiesConfiguration("application.properties"));
或者通过ConfigurationFactory这个类 :
ConfigurationFactory factory = new ConfigurationFactory("config.xml");Configuration config = factory.getConfiguration();
上面的config.xml是一个配置描述符。它定义了将要被装载的配置对象(资源文件),例如:
上面的config.xml是一个配置描述符。它定义了将要被装载的配置对象(资源文件),例如:
上面的意思是,我们加载了系统的配置,也加载了application.properties这个文件。
他的优先(precedence)顺序是从前到后。所以在上面的例子中,如果一个属性在系统配置中没有,他将在文件配置中查找。这将允许你在文件配置中设定默认值,而且可以在系统配置中覆盖他们。
因为你的喜爱会挡也挡不住地流露出来。