如何在运行时修改Web应用程序中的属性文件?

时间:2012-11-20 17:15:21

标签: java web-applications spring-mvc properties resources

我的Web应用程序通过从属性文件中读取来执行其某些行为。我希望有一个管理控制台,可以在应用程序通过jsp接口运行时修改属性文件。我现在可以通过执行以下操作来读取属性文件:

Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(FILE_PATH));  

然后我可以将它们传递给我的视图并显示它们。

当我想修改它们时,我无法以相同的方式找到属性文件(需要输出流)来保存新的属性值,除非我将完整路径传递给文件。

我已经读过,修改ClassLoader给你的资源是不好的做法。如果我要将属性文件放在Web应用程序的外部,如何在修改完成时确保它已被锁定?还有另一种方法(属性必须在.properties文件中)。

如果有任何不同,我会使用Spring MVC使用Tomcat。

1 个答案:

答案 0 :(得分:1)

我会将您当前的属性文件保留在原来的位置,并将其用作基本的“加载”源。所有覆盖都将转到Web应用程序外部的位置(使位置可配置)。你的启动逻辑总是:

  • 加载基础源
  • 叠加覆盖

很明显,每当通过管理控制台更改属性时,它都将保存为覆盖。除了解决应用程序存档问题之外,此设置的一个很好的功能是,您可以为用户提供将属性值恢复为“默认”的选项。