import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
/**
* @author: caiyaming
* @date: 2018-07-18 19:16
*/
public class SysConfig {
private static Properties props = null;
private static File configFile = null;
private static long fileLastModified = 0L;
//classpath下配置文件名
private static String configFileName = "application.properties";
private static void init() {
URL url = SysConfig.class.getClassLoader().getResource(configFileName);
configFile = new File(url.getFile());
fileLastModified = configFile.lastModified();
props = new Properties();
load();
}
private static void load() {
try {
//注意清空,否则没有新值,会使用旧值
props.clear();
//获取属性
props.load(new InputStreamReader(new FileInputStream(configFile),"UTF-8"));
//获取文件修改时间
fileLastModified = configFile.lastModified();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static String getConfig(String key) {
if ((configFile == null) || (props == null)) init();
if (configFile.lastModified() > fileLastModified) load(); //当检测到文件被修改时重新加载配置文件
return props.getProperty(key);
}
public static void main(String[] args) throws IOException {
System.out.println(getConfig("spring.redis.timeout111"));
}
}
注:这里默认配置文件在classpath下.