一、commons-configuration2简介和maven依赖
commons-configuration2是很好用的配置文件读取工具库,支持很多配置文件格式,实际开发中常见的配置文件也就是property类型(后缀:.properties)。commons-configuration2较commons-configuration有很大改进,更好的支持配置自动重载,可以在不关闭服务器/应用程序的情况下直接修改配置文件,commons-configuration2自动读取修改后的配置,从而达到在不关闭服务器/应用程序的条件下调整程序流程和走向的目的。
commons-configuration2需要如下maven依赖:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
二、读取property配置和自动重载配置
我将读取property配置的功能封装成了一个spring bean,代码如下。该代码可直接粘贴复制拿来用,(需要将如下代码放到spring bean扫描路径上)或者(注释掉@Component注解然后将如下代码手动配置成spring bean)。总之不管怎样,只要能将如下代码做成一个spring管理的bean即可。如下代码有详细注释,配置自动重载功能在代码中有体现,详见注释(代码中写的是5秒钟检测一次配置是否需要重载,可自己根据实际情况修改为其他值)。
package com.szq.learn.springcomponent;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.annotation.PreDestroy;
import org.apache.commons.configuration2.ConfigurationUtils;
import org.apache.commons.configuration2.ImmutableConfiguration;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.ReloadingFileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Parameters;
import org.apache.commons.configuration2