关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
关于系统读取properties配置⽂件的路径问题,包括打成jar包的运⾏⽂件在当前的⼀个项⽬中,遇到以下业务需要:
1.开发环境是在myeclipse⾥运⾏的时候,启动服务后,有⼀个加载配置⽂件属性信息的Global.java。⽤于得
到配置⽂件⾥的配置信息;
2.发布系统的时候,需要把系统打成jar执⾏,这时候之前的加载配置⽂件的⽅法就不起作⽤了得不到配置⽂
件的路径;
3.因在系统刚启动时,需要启动加载⼀个Listener,在Listener⾥⼜加载了⼀个配置⽂件。
4.以上加载配置⽂件,都是只能加载⼀次配置⽂件,当配置⽂件的内容修改后,只能再次重启服务后才能读
取到变动的配置内容,系统中有些配置参数是需要时时获取配置⽂件⾥的最新参数信息。
如何在以上场景加载配置⽂件呢,通过来回的资料、调试,终于搞定。以下是具体代码:
[java]view plaincopy
1. package test;
2.
3. import java.io.FileInputStream;
4. import java.io.IOException;
5. import java.io.InputStream;
6. import java.util.Properties;
7.
8. import figuration.PropertiesConfiguration;
9. import loading.FileChangedReloadingStrategy;
10. public class Test {
泡菜坛11.    public static void main(String[] args) throws Exception{
12.        System.out.println(load1());//通过ClassLoader⽅式加载配置⽂件
差不多歌词13.        System.out.println(load2());//
14.
15.    }
16.    /**
17.      * 通过ClassLoader⽅式加载配置⽂件
18.      * 这种加载⽅式:
19.      *          1.可在myeclipse⾥运⾏时得到配置⽂件路径;
20.      *          2.亦可在把项⽬打成jar包运⾏时,得到配置⽂件路径;
21.      */
22.    public static String load1()throws Exception{
23.        Properties p = new Properties();
24.        InputStream in = ClassLoader().getResourceAsStream("config/config.properties");
25.        p.load(in);
26.        return  p.getProperty("user_name").toString().trim();
27.    }揭阳市是哪个省
28.
29.    /**
30.      * ⾃动加载配置⽂件机制,可在修改配置⽂件后,不⽤重启服务也能得到配置⽂件的新内容
31.      */
32.    public static String load2()throws Exception{
33.        String file_name = ClassLoader().getResource("config/config.properties").getFile();
34.        Properties p = new Properties();
35.        PropertiesConfiguration propconfig =null;//创建⾃动加载的机制三鲜饺子馅的做法
36.        propconfig = new PropertiesConfiguration();
37.        propconfig.setEncoding("UTF-8");//设置编码
38.        propconfig.setReloadingStrategy(new FileChangedReloadingStrategy());//设置⾃动冲加载机制
39.        p.load(new FileInputStream(file_name));
八十年代歌曲40.        Property("user_name").toString().trim();//每次调⽤这个⽅法都会从配置⽂件⾥取到最新
的参数
41.    }
个行签名42. }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。