commons configuration库允许application从不同形式的配置文件中读写配置数据。
它不仅可以从properties,xml,ini文件读取配置,支持变量插值,
还可以从系统配置,Servlet参数中读取配置。
更可以通过JDBC或者JNDI数据源读写数据库中的配置。
也可以组合多种配置文件同时使用。
同时支持文件中的变量插值,自动类型转换,还可支持jexl表达式语言等,同时你可以自由定制各种行为以满足您的需求。
非常强大,使用也非常简单。
注意本文基于的是Apache Commons Configuration组件1.10版本而言的。
Configuration 2.0版本还在开发中,没有正式发布。
Configuration 2.0 SVN Checkout地址:http://svn.apache.org/viewvc/commons/proper/configuration/trunk/
但是目前为止已经发布了2.0-SANPSHOT版本,可惜不对外公布。我们可以通过以下连接获取:
2.0-SNAPSHOT:https://repository.apache.org/content/repositories/snapshots/commons-configuration/commons-configuration/2.0-SNAPSHOT/
由于2.0-SNAPSHOT接口很不完整,所以千万别看完此文后去尝试2.0版本。
以下均为基于1.X版本而言。2.0版本中的在此处介绍的有些特性还没有完全实现。
注意:任何针对1.X版本中的写操作都是非线程安全的。
一基础介绍:
例如:
Double double = config.getDouble("number");
Integer integer = config.getInteger("number");
1.组件支持的配置文件形式有如下几种:
- Properties files
- XML documents
- Windows INI files
- Property list files (plist)
- JNDI
- JDBC Datasource
- System properties
- Applet parameters
- Servlet parameters
当然你也可以通过DefaultConfigurationBuilder(新版API不再推荐使用ConfigurationFactory)和CompositeCOnfiguration组合使用多种形式的配置。(如,system配置和xml文件配置一起使用)
当然如果你有特殊需要可以继承AbstractConfiguration or AbstractFileConfiguration来读取你自己格式的配置文件,
以上所有的配置文件我们都可以一致地通过Configuration接口来进行操作。
2.下面我们说一下混合多重配置形式的方式:
第一种方式:
需要的类:CompositeConfiguration,
CompositeConfiguration config = new CompositeConfiguration(); config.addConfiguration(new SystemConfiguration()); config.addConfiguration(new PropertiesConfiguration("application.properties"))
第二种方式:使用DefaultConfigurationBuilder(ConfigurationFactory现在已不推荐)
DefaultConfiguration主要用于复杂项目中多个配置文件的读取。注意:DefaultConfiguration只能使用多配置文件的配置文件来初始化。
所以在使用时一定要提供一个配置文件的配置文件。对,你没看错。
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder("config.xml"); Configuration config = builder.getConfiguration<