FileChangedReloadingStrategy的简单使用

来源:互联网 发布:网络安全隐患 编辑:程序博客网 时间:2024/05/29 04:29

--------------------------------------------------------------------------------------------------------------------------------------

需求:当采用配置与代码分离时,如果只是修改配置文件(比如properties文件), 无需重启服务器

方案:采用commons-configuration-1.10.jar的org.apache.commons.configuration.reloading.FileChangedReloadingStrategy

来实现动态加载配置文件的问题

测试:step1: 启动main方法 

    step2: 修改当前类的class文件所在的目录下的reloadstrategy-test.properties文件里面的属性user.loginName

的值并保存文件,可以看到输出已更新为最新的值

---------------------------------------------------------------------------------------------------------------------------------------

示例代码采用Maven依赖:

<!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration --><dependency><groupId>commons-configuration</groupId><artifactId>commons-configuration</artifactId><version>1.10</version></dependency>

代码:

package cn.raysun.demo.shiro.other;import java.io.File;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.PropertiesConfiguration;import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;/** * {@code FileChangedReloadingStrategy}的测试类 * @author ray.sun *  */public class FileChangedReloadingStrategyTest {//加载文件的频率private static final long RELOAD_PERIOD = 10L;private static PropertiesConfiguration config;public static void main(String[] args) {//获得当前类运行的classpath路径String currentClassPath = ClassLoader.getSystemResource("").getPath();initialize(currentClassPath + "reloadstrategy-test.properties");while(true){try {System.out.println("user=" + config.getString("user.loginName"));Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}//初始化配置文件和文件加载策略private static void initialize(String filePath){try {FileChangedReloadingStrategy fileChangedReloadingStrategy = new FileChangedReloadingStrategy();//设置扫描文件的最小时间间隔fileChangedReloadingStrategy.setRefreshDelay(RELOAD_PERIOD);//设置加载策略config = new PropertiesConfiguration(new File(filePath));config.setReloadingStrategy(fileChangedReloadingStrategy);} catch (ConfigurationException e) {e.printStackTrace();}}}








0 0
原创粉丝点击