动态加载:
1.需要configuration包:
<!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration -->
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.10</version>
</dependency>
2.示例:
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();
}
}
}