属性文件加载

时间:2009-08-25 14:30:25

标签: java web-applications

我有一个从属性文件中读取内容的Web应用程序。何时将此属性文件加载到内存中。即。一旦我在prop文件中部署了包含一些内容的应用程序,并在部署之后,我更改了prop文件的内容,是否会反映更改或者我是否必须重新部署?

编辑:访问者类'静态块从属性文件中读取内容,属性文件是已部署的Web应用程序的一部分。现在部署后,我更改属性文件内容。访问者类会读取更改还是会占用旧值?

EDIT2:当重新加载类时,它肯定会占用新修改的文​​件,或者更确切地说是在部署期间缓存的文件(如果它已被缓存)

4 个答案:

答案 0 :(得分:2)

假设Properties类正在加载属性文件,那么在调用Properties#load()方法时,属性文件将被加载一次。除非您的应用程序特别支持重新加载或者您的Web容器在热部署期间重新启动Web应用程序,否则不会自动重新加载。

更新:由于属性文件是在静态初始化程序中加载的,因此在重新加载类时将重新加载属性文件(例如,当Web应用程序被热部署时)。如果你想调试它,静态初始值设定项中的一个简单的println()会告诉你何时发生这种情况。

答案 1 :(得分:1)

这取决于应用服务器 - 通常,您必须重新部署。但某些配置服务器在某些配置中可能会监视文件,并在检测到文件更改时启动重新部署。 (作为示例 - 我相信Tomcat会在检测到爆炸部署中的文件更改时自动重新部署。)

答案 2 :(得分:0)

如果你的班级加载了这个文件,我很确定它不会自行重新加载。

如果我是你,我将有一个单独的线程,在给定的时间间隔内唤醒,检查文件修改日期是否已更改,是否已更改,而不是重新加载它。

答案 3 :(得分:0)

Apache Commons Configuration提供automatic reloading/saving基于文件的配置。