commons-configuration2(配置管理库)
概述
Java配置管理库,支持XML、properties、INI等多种格式的配置文件,并提供统一的配置管理接口。
maven依赖
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-configuration2</artifactId><version>2.9.0</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.11.0</version></dependency><!-- 使用XPath表达式解析器需要引入 --><dependency><groupId>commons-jxpath</groupId><artifactId>commons-jxpath</artifactId><version>1.4.0</version></dependency>
示例
Configurations configurations=new Configurations();//读取properties配置文件PropertiesConfiguration propertiesConfig = configurations.properties(this.getClass().getResource("/config/demo.properties"));System.out.println(propertiesConfig.getString("a.b"));//读取yaml配置文件YAMLConfiguration yamlConfig = configurations.fileBased(YAMLConfiguration.class, this.getClass().getResource("/config/demo.yaml"));System.out.println(yamlConfig.getString("a.b"));//读取xml配置文件XMLConfiguration xmlConfig = configurations.xml(this.getClass().getResource("/config/demo.xml"));System.out.println(xmlConfig.getString("a.b"));//获取标签体内容System.out.println(xmlConfig.getString("a.b[@id]"));//获取标签属性//读取系统环境变量EnvironmentConfiguration configuration=new EnvironmentConfiguration();System.out.println(configuration.getMap());
常用API
Configurations
方法 | 说明 |
---|---|
Configurations() Configurations(Parameters params) | 构造方法 |
getParameters() | 获取参数 |
fileBased(Class configClass, File file) fileBased(Class configClass, URL url) fileBased(Class configClass, String path) | 获取指定的配置对象(FileBasedConfiguration的实现类) |
properties(File file) properties(URL url) properties(String path) | 获取properties配置对象 |
xml(File file) xml(URL url) xml(String path) | 获取xml配置对象 |
ini(File file) ini(URL url) ini(String path) | 获取ini配置对象 |
combined(File file) combined(URL url) combined(String path) | 获取组合配置对象 |
fileBasedBuilder(Class configClass, File file) fileBasedBuilder(Class configClass, URL url) fileBasedBuilder(Class configClass, String path) | 获取指定的配置对象构造器 |
propertiesBuilder() propertiesBuilder(File file) propertiesBuilder(PropertiesBuilderParameters parameters) propertiesBuilder(URL url) propertiesBuilder(String path) | 获取properties配置对象构造器 |
xmlBuilder(File file) xmlBuilder(URL url) xmlBuilder(String path) | 获取xml配置对象构造器 |
iniBuilder(File file) iniBuilder(URL url) iniBuilder(String path) | 获取ini配置对象构造器 |
combinedBuilder(File file) combinedBuilder(URL url) combinedBuilder(String path) | 获取组合配置对象构造器 |
可用配置实现类
- FileBasedConfiguration的实现类
实现类 | 说明 |
---|---|
INIConfiguration | 用于处理ini格式配置文件的类 |
JSONConfiguration | 用于处理JSON格式配置文件的类,支持JSON的解析、写入和动态更新。 |
PropertiesConfiguration | 用于处理properties格式配置文件的类 |
PropertyListConfiguration | 用于处理plist格式配置文件的类 |
XMLConfiguration | 用于处理xml格式配置文件的类,根标签为<configuration> |
XMLPropertiesConfiguration | |
XMLPropertyListConfiguration | |
YAMLConfiguration | 用于处理yaml格式配置文件的类 |
PatternSubtreeConfigurationWrapper | 包装类,用于基于正则表达式匹配子配置树的工具类,主要用于从大型配置中提取特定结构的子配置。 |
- 其他配置类
实现类 | 说明 |
---|---|
AppletConfiguration | 用于读取Applet参数的只读配置类 |
BaseConfiguration | 基础内存配置实现类,用于在内存中存储和管理键值对配置 |
BaseHierarchicalConfiguration | 基础支持层级结构的配置类,适用于XML、JSON等树形配置 |
CombinedConfiguration | 用于组合多个配置源的复合配置类 |
CompositeConfiguration | 用于组合多个配置源的替代实现,与CombinedConfiguration类似但采用不同的合并策略 |
DataConfiguration | 用于处理数据源配置的扩展类,提供数据库连接等数据相关配置的便捷访问方法 |
DatabaseConfiguration | 用于从数据库读取配置的实现类,支持单表多配置存储和自动提交控制 |
DynamicCombinedConfiguration | 支持动态重载的组合配置实现,继承自CombinedConfiguration并增加了自动检测配置变更的能力 |
EnvironmentConfiguration | 用于读取系统环境变量的配置实现类,将操作系统环境变量映射为配置属性 |
JNDIConfiguration | 用于从JNDI树读取配置的实现类,支持访问各种JNDI资源 |
MapConfiguration | 基于Map存储的配置实现类,支持将任意Map对象转换为配置源 |
ServletConfiguration | 用于读取Servlet上下文参数和初始化参数的配置实现类 |
ServletContextConfiguration | 读取web.xml中的 |
ServletFilterConfiguration | 读取Filter初始化参数 |
ServletRequestConfiguration | 读取HTTP请求头和参数 |
SubnodeConfiguration | 用于处理配置子树的分层配置实现类,支持对INI/XML等结构化配置的节点级操作 |
SubsetConfiguration | 基于前缀筛选的配置数据,可创建父配置的特定前缀子集 |
SystemConfiguration | 用于读取JVM系统属性的配置实现类 |
配置类常用方法
方法 | 说明 |
---|---|
isEmpty() | 判断配置是否为空 |
size() | 获取配置大小 |
containsKey(String key) | 判断是否含有指定配置 |
getKeys() getKeys(String prefix) | 获取所有配置键的迭代器 |
setProperty(String key, Object value) getProperty(String key) | 设置或获取指定键的配置值 |
clearProperty(String key) | 清除指定键的配置 |
getProperties(String key) getProperties(String key, Properties defaults) | 获取配置项Properties对象 |
getBoolean(String key) getBoolean(String key, boolean defaultValue) getBoolean(String key, Boolean defaultValue) | 用于从配置文件中读取布尔类型的配置值。 |
getByte(String key) getByte(String key, byte defaultValue) getByte(String key, Byte defaultValue) | 用于从配置文件中读取byte类型的配置值。 |
getDouble(String key) getDouble(String key, double defaultValue) getDouble(String key, Double defaultValue) | 用于从配置文件中读取double类型的配置值。 |
getDuration(String key) getDuration(String key, Duration defaultValue) | 用于从配置文件中读取 duration类型 的配置值。 |
getFloat(String key) getFloat(String key, float defaultValue) getFloat(String key, Float defaultValue) | 用于从配置文件中读取 float类型 的配置值。 |
getInt(String key) getInt(String key, int defaultValue) getInteger(String key, Integer defaultValue) | 用于从配置文件中读取 int类型 的配置值。 |
getLong(String key) getLong(String key, long defaultValue) getLong(String key, Long defaultValue) | 用于从配置文件中读取 long类型 的配置值。 |
getShort(String key) getShort(String key, short defaultValue) getShort(String key, Short defaultValue) | 用于从配置文件中读取 short类型 的配置值。 |
getBigDecimal(String key) getBigDecimal(String key, BigDecimal defaultValue) | 用于从配置文件中读取 BigDecimal 类型 的配置值。 |
getBigInteger(String key) getBigInteger(String key, BigInteger defaultValue) | 用于从配置文件中读取 BigInteger 类型 的配置值。 |
getString(String key) getString(String key, String defaultValue) | 用于从配置文件中读取 字符串类型 的配置值。 |
getEncodedString(String key, ConfigurationDecoder decoder) getEncodedString(String key) | 用于从配置文件中读取 编码字符串类型 的配置值。 |
getStringArray(String key) | 用于从配置文件中读取 字符串数组类型 的配置值。 |
getList(String key) getList(String key, List<?> defaultValue) getList(Class<T> cls, String key) getList(Class<T> cls, String key, List<T> defaultValue) | 用于从配置文件中读取 List集合类型 的配置值。 |
get(Class<T> cls, String key) get(Class<T> cls, String key, T defaultValue) | 用于从配置文件中读取 指定类型 的配置值。 |
getArray(Class<?> cls, String key) getArray(Class<?> cls, String key, Object defaultValue) | 用于从配置文件中读取数组类型 的配置值。 |
getCollection(Class<T> cls, String key, Collection<T> target) getCollection(Class<T> cls, String key, Collection<T> target, Collection<T> defaultValue) | 用于从配置文件中读取 Collection类型 的配置值。 |
copy(Configuration c) | 复制配置对象 |
append(Configuration c) | 用于将一个配置对象的内容追加到另一个配置对象中。 |
interpolatedConfiguration() | 允许在配置值中引用其他配置项或系统环境变量,动态解析其值。 |
getListDelimiterHandler() setListDelimiterHandler(ListDelimiterHandler listDelimiterHandler) | 用于获取或设置配置文件中列表分隔符,主要用于处理配置值中包含的列表 |
getConversionHandler() setConversionHandler(ConversionHandler conversionHandler) | 用于获取或设置类型转换处理器 |
setThrowExceptionOnMissing(boolean throwExceptionOnMissing) isThrowExceptionOnMissing() | 用于控制当访问不存在的配置键时是否抛出异常 |
getInterpolator() setInterpolator(ConfigurationInterpolator ci) | 用于获取或设置当前配置对象的变量插值处理器 |
installInterpolator(Map<String, ? extends Lookup> prefixLookups, Collection<? extends Lookup> defLookups) | 用于自定义或扩展变量插值逻辑 |
setPrefixLookups(Map<String, ? extends Lookup> lookups) | 用于批量注册自定义变量解析前缀 |
setDefaultLookups(Collection<? extends Lookup> lookups) | 用于配置全局默认变量解析前缀 |
setParentInterpolator(ConfigurationInterpolator parent) | 用于设置当前插值器的父级插值器 |
setConfigurationDecoder(ConfigurationDecoder configurationDecoder) getConfigurationDecoder() | 用于设置配置解码器 |
getLogger() setLogger(ConfigurationLogger log) | 用于设置日志记录器 |
addErrorLogListener() | 用于添加错误日志监听器 |
getSynchronizer() setSynchronizer(Synchronizer synchronizer) | 用于设置同步控制器 |
lock(LockMode mode) | 用于实现线程同步,加锁 |
unlock(LockMode mode) | 用于实现线程同步,解锁 |
addProperty(String key, Object value) | 添加配置数据 |
subset(String prefix) | 获取配置的子集 |
immutableSubset(String prefix) | 获取配置不可修改的子集 |
clear() | 清空配置 |