首页>代码>java web开发maven工程只需修改配置文件不用重启工程即可动态加载配置文件>/Web/src/main/java/com/ambimmort/util/ConfigManager.java
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.ambimmort.util; import com.ambimmort.Listener.FileListenerAdaptor; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; //读取配置文件(属性文件)的工具类 public class ConfigManager { private static ConfigManager configManager; //properties.load(InputStream);读取属性文件 private static Properties properties; //设置动态读取的文件路径 private static String configPath = "E:/Documents/NetBeansProjects/ConfigManager/conf"; //设置动态读取的文件名 private static String pathName = "/configuration.properties"; InputStream in = null; static { try { // 构造观察类主要提供要观察的文件或目录,当然还有详细信息的filter FileAlterationObserver observer = new FileAlterationObserver( new File(configPath), null, null); // 构造收听类 FileListenerAdaptor listener = new FileListenerAdaptor(); // 为观察对象添加收听对象 observer.addListener(listener); // 配置Monitor,第一个参数单位是毫秒,是监听的间隔;第二个参数就是绑定我们之前的观察对象。 FileAlterationMonitor fileMonitor = new FileAlterationMonitor( 1000, new FileAlterationObserver[]{observer}); // 启动开始监听 fileMonitor.start(); } catch (Exception ex) { Logger.getLogger(FileListenerAdaptor.class .getName()).log(Level.SEVERE, null, ex); } } public ConfigManager() { // String configFile = "/opt/soft/apache-tomcat-8.0.12/webapps/gn/conf/configuration.properties"; String configFile = configPath + pathName; properties = new Properties(); try { System.out.println(configPath + pathName); in = new FileInputStream(configFile); properties.load(in); in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static ConfigManager getInstance() { if (configManager == null) { configManager = new ConfigManager(); } return configManager; } public String getString(String key) { return properties.getProperty(key); } public int getInt(String key) { return Integer.parseInt(properties.getProperty(key)); } public static void main(String[] args) { String ip = ConfigManager.getInstance().getString("ip"); int prot = ConfigManager.getInstance().getInt("port"); System.out.println("ip:" + ip + "\tport:" + prot); } }

lbcanjelling LV3
2019年3月27日
云想衣裳花想容 LV1
2019年3月22日
滑小稽稽 LV7
2018年9月25日
imagine LV1
2018年9月19日
双城1234 LV1
2018年9月7日
zhoujian0319 LV1
2017年12月19日
回音哥 LV13
2017年12月11日
xiechang0122 LV5
2017年11月23日
wytongchun LV1
2017年11月2日
chinafjfzlj LV31
2017年10月11日