关于系统读取properties配置⽂件的路径问题,包括打成jar包的运⾏⽂件在当前的⼀个项⽬中,遇到以下业务需要:
1.开发环境是在myeclipse⾥运⾏的时候,启动服务后,有⼀个加载配置⽂件属性信息的Global.java。⽤于得
到配置⽂件⾥的配置信息;
2.发布系统的时候,需要把系统打成jar执⾏,这时候之前的加载配置⽂件的⽅法就不起作⽤了得不到配置⽂
件的路径;
3.因在系统刚启动时,需要启动加载⼀个Listener,在Listener⾥⼜加载了⼀个配置⽂件。
4.以上加载配置⽂件,都是只能加载⼀次配置⽂件,当配置⽂件的内容修改后,只能再次重启服务后才能读
取到变动的配置内容,系统中有些配置参数是需要时时获取配置⽂件⾥的最新参数信息。
如何在以上场景加载配置⽂件呢,通过来回的资料、调试,终于搞定。以下是具体代码:
properties文件用什么打开[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;python安装环境
square是什么意思怎么读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. /**
stringbuilder拼接字符串17. * 通过ClassLoader⽅式加载配置⽂件
18. * 这种加载⽅式:
19. * 1.可在myeclipse⾥运⾏时得到配置⽂件路径;
20. * 2.亦可在把项⽬打成jar包运⾏时,得到配置⽂件路径;
21. */
10000000作为补码求原码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小时内删除。
发表评论