首页>代码>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日