Java中动态加载properties文件,而不需要重启应用的解决方法
在Java项目中,如果需要使用.properties类型的文件作为某些配置信息存放介质的时候,一般都是将.properties文件放在src目录下,代码大部分都是这样写的:
- Properties prop = new Properties();
- InputStream is = CommonUtils.class.getClassLoader().getResourceAsStream("config.properties");//假设当前这个方法是在CommonUtils类下面
- prop.load(is);
在系统启动之后,config.properties中的key-value信息都可以获取,但是某一天,你想改变一下config.properties中的相关配置,但是又不能重启应用,你就会发现,明明已经修改了config.properties文件内容,为什么读出来的信息还是原先的?
经过google后发现,原来使用
- CommonUtils.class.getClassLoader().getResourceAsStream("config.properties")
这种加载方法会将config.properties文件加载到内存中,在下次需要读取时直接从内存中获取文件信息,而不是再次读取!
既然以上方法会将文件信息缓存,那么我只要改变一下文件的输入流获取方式就行了。
改成如下方式就行了:
- Properties prop = new Properties();
- String path = CommonUtils.class.getClassLoader().getResource("config.properties").getPath();
- InputStream is = new FileInputStream(path);
- prop.load(is);
或者
- String dirPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();//获取config.properties文件所在的父目录
- File file = new File(dirPath,"config.properties");
相关推荐
动态加载`properties`文件是一项关键技能,特别是在大型应用程序中,它允许程序在运行时根据需要更新配置,而无需重启服务。下面我们将深入探讨动态加载`properties`的相关知识点。 1. **什么是.properties文件?**...
什么是properties文件为什么要使用properties文件使用java加载properties文件的两种方式使用类的加载器获得输入流加载文件getResourceAsStream()介绍使用文件输入流加载文件实现动态加载properties文件,不用重启的...
在`configurationDemo`文件中,可能包含了一个简单的Java应用,该应用展示了如何使用Apache Commons Configuration库进行配置文件的【增删改查】操作以及动态加载。通过运行这个案例,我们可以更直观地理解这些功能...
在Spring框架中,动态加载配置文件是一项重要的功能,它允许我们在程序运行时改变或更新配置,而无需重启应用。这在开发和生产环境中都具有很高的实用价值,尤其是在配置需要频繁调整或者希望实现热更新的场景下。...
在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...
在开发Java Web应用程序时,尤其是使用Mybatis作为持久层框架的时候,经常遇到的一个问题是:当我们在IntelliJ IDEA中修改了Mapper XML文件后,需要手动重启Tomcat服务器才能看到改动的效果,这无疑降低了开发效率。...
热部署是指在应用程序运行时,能够动态替换或更新应用的类文件或资源文件,而无需停止或重启服务器。在传统的开发流程中,每次代码更改都需要重新构建并启动服务器,这无疑浪费了大量时间。有了热部署,开发者可以...
这篇博客文章《动态加载属性文件》探讨了如何在程序运行时动态地读取和更新这些文件,而无需重启应用。 首先,我们来理解一下什么是属性文件。在Java中,`java.util.Properties`类是用来处理属性列表的,这些属性...
在Java开发中,配置文件是不可或缺的一部分,它们用于存储应用程序的设置、连接信息和其他环境特定的参数。YAML(YAML Ain't Markup Language)和Properties是两种常见的配置文件格式。本篇文章将深入探讨如何使用...
在MyEclipse中配置Tomcat进行动态加载,能够让开发者在不重启服务器的情况下实现应用的热更新,提高开发效率。下面将详细解释这一过程以及相关的技术知识点。 首先,理解"动态加载"的概念。动态加载是指在程序运行...
"properties插件"是软件开发过程中经常使用的工具,主要用于处理和管理Java应用程序中的配置属性文件。这些文件通常以.properties为扩展名,包含了程序运行时所需的配置信息,如数据库连接字符串、系统参数等。...
"Eclipse properties插件"就是为了方便开发者更有效地管理和查看这些Properties文件而设计的工具。 这款插件的主要功能包括: 1. **实时预览**:在编辑Properties文件时,插件会提供即时的预览窗口,显示当前编辑...
在Java编程中,进程配置文件的重新加载是一个关键操作,特别是在动态环境或持续集成的场景下,我们需要在不重启服务的情况下更新配置并让程序立即生效。`Java进程配置文件Reload`涉及的主要知识点包括: 1. **Java...
通常,在Java开发中,.properties文件用于存储应用程序的配置信息,如国际化(i18n)的文本。这些文件通常以ASCII编码,不支持直接输入中文字符,需要通过特定的编码转换才能实现中文显示。该插件的出现,极大地便利了...
为了解决这个问题,开发者通常寻求“热部署”解决方案,即在不重启服务器的情况下,能够实时应用代码变更。本篇文章将详细介绍如何在Eclipse中实现代码修改后的热部署。 首先,我们需要理解什么是热部署。热部署是...
为了解决这个问题,我们可以配置MyBatis实现热加载,即在XML文件改动后无需重启应用就能自动感知并更新。本文将详细讲解如何在Spring Boot中配置MyBatis的XML资源文件实现热加载,并介绍相关文件的作用。 首先,...
然而,当我们在MyEclipse中修改了类文件或JSP文件后,通常需要重启Tomcat服务器才能使更改生效,这无疑增加了开发过程中的等待时间。本文将详细介绍如何在MyEclipse中实现修改类及JSP文件后无需重启Tomcat即可实时...
之后,通过SystemProperties设置系统属性,记录下字体路径,并调用Typeface类中的setCustomFont方法来应用新的字体文件。 需要注意的是,动态更换字体并不简单地替换字体文件,还需要处理字体的兼容性和显示效果。...
通过以上步骤,你应该能够在修改JSP文件后立即看到更新的效果,而无需每次手动重启Spring Boot应用。当然,如果你使用的是JRebel等高级热部署工具,它们可能提供了更强大的功能,例如动态更新Java类和资源,但这也...
`spring-boot-devtools` 内部采用了一种特殊的机制,能够在类文件发生变化时重新加载该类,而无需重启整个应用。 3. **属性文件热部署**:当配置文件发生变化时,`spring-boot-devtools` 能够监听到变化并自动更新...