2

我的 Web 应用程序通过读取属性文件来执行它的一些行为。我想要一个可以在应用程序通过 jsp 界面运行时修改属性文件的管理控制台。我目前可以通过执行以下操作来读取属性文件:

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

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

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

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

如果这有什么不同的话,我在使用 Spring MVC 的 Tomcat。

4

1 回答 1

1

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

  • 加载基础源
  • 覆盖覆盖

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

于 2012-11-20T17:23:38.187 回答