Java动态加载配置文件
2017-07-05 11:17
218 查看
今天无意间在项目的代码中看到如下这样一段简单加载配置文件的代码:
其实代码本身是没有什么问题的。问题就是用这种方式来读取配置文件,会存在属性文件的缓存问题。
什么意思呢?就是当系统在运行过程中第一次执行这段代码的时候,会将config.properties这个配置文件的信息保存在缓存当中,进而再次执行该段代码时候会从缓存当中读取,而不是再次读取config.properties配置文件。
换句话来讲,当系统在运行时,我们去修改配置文件的相应信息,此时配置文件不会立即生效除非重启系统程序。所以这样操作比较繁琐,尤其是在配置文件修改频繁的情况下。所以让Java动态的加载配置文件是很有必要的。
以下是我粗糙修改后动态加载配置文件的代码:
用这种方法来获取配置文件的绝对路径,再以流的形式读取配置文件传入,避免了上述配置文件缓存的问题,能实现配置文件的动态加载。我们在程序运行的过程当中修改配置文件相应信息,程序再次执行会直接读取生效。
至于上面这句代码,是我后来添加的,主要是用来转换文件路径,避免空格的问题。若不用这句代码对路径进行转换,获取的文件路径当中会包含空格,且路径的空格会被替代为‘%20’,这样直接读取会导致系统找不到文件。
Properties prop = new Properties(); InputStream in = PropertiesTest.class.getClassLoader().getResourceAsStream("/config.properties"); prop.load(in);
其实代码本身是没有什么问题的。问题就是用这种方式来读取配置文件,会存在属性文件的缓存问题。
什么意思呢?就是当系统在运行过程中第一次执行这段代码的时候,会将config.properties这个配置文件的信息保存在缓存当中,进而再次执行该段代码时候会从缓存当中读取,而不是再次读取config.properties配置文件。
换句话来讲,当系统在运行时,我们去修改配置文件的相应信息,此时配置文件不会立即生效除非重启系统程序。所以这样操作比较繁琐,尤其是在配置文件修改频繁的情况下。所以让Java动态的加载配置文件是很有必要的。
以下是我粗糙修改后动态加载配置文件的代码:
Properties prop = new Properties(); String path = Thread.currentThread().getContextClassLoader().getResource("config.properties").getPath(); path = URLDecoder.decode(path, "UTF-8"); FileInputStream in = new FileInputStream(path); prop.load(in);
用这种方法来获取配置文件的绝对路径,再以流的形式读取配置文件传入,避免了上述配置文件缓存的问题,能实现配置文件的动态加载。我们在程序运行的过程当中修改配置文件相应信息,程序再次执行会直接读取生效。
path = URLDecoder.decode(path, "UTF-8");
至于上面这句代码,是我后来添加的,主要是用来转换文件路径,避免空格的问题。若不用这句代码对路径进行转换,获取的文件路径当中会包含空格,且路径的空格会被替代为‘%20’,这样直接读取会导致系统找不到文件。
相关文章推荐
- java动态加载配置文件
- tomcat6配置java项目启动动态加载配置文件
- java动态加载配置文件(申明:来源于网络)
- java动态加载配置文件
- java动态加载配置文件
- 记java动态加载配置文件不成功的问题
- [java热部署系列 1] 动态加载配置文件的正确姿势
- java动态加载配置文件不成功的问题
- java动态加载配置文件
- JAVA 动态加载properties配置文件
- java 使用properties文件配置动态信息
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件
- java应用(非web应用)中log4j.properties动态修改配置文件,无需重启,就能立即生效,如何实现?
- 【转】unity3d动态加载及生成配置文件
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件
- C#动态加载DLL,通过配置文件实现对程序集的即插即用
- JAVA Servlet 动态加载配置文件.properties
- Java 利用commons-configuration.jar 动态修改配置文件(.properties)
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- 使用反射机制动态加载配置文件