3

我使用 Maven。我的 Web 应用程序包含两个模块,每个模块都有自己的 spring 上下文。第一个被装到罐子里,第二个被装到战争中。第二个使用第一个模块的 jar 并调用它的方法。

我需要添加属性文件,该文件将由第一个模块(通过 spring 上下文)使用。主要问题是我应该能够在战争部署后访问/编辑此属性文件。

我怎样才能提供这样一个属性文件,它将在第一个 jar 模块中使用并且可以在 war 模块部署后更改?

谢谢。

4

1 回答 1

2

抱歉,没有看到问题,您需要更好地描述它。据我了解,这是要走的路:

  1. 放入a.propertiesJARsrc/main/resources模块
  2. 使用 aPropertyPlaceholderConfigurer使属性在 Spring 上下文中可用
  3. 它将被打包在 JAR 的根目录中
  4. JAR 最终出现在WEB-INF/libWAR 中,这又是“类路径的根”,可以这么说

更新,2013-06-09

(问题已根据对上述初始答案的评论进行了更新)

本质上,您似乎正在寻找(仍然不太确定)是如何从未与您的 WAR/JAR 打包的属性文件中加载属性

在这种情况下,您可以跳过除 2 之外的所有上述步骤。

  1. 使用 aPropertyPlaceholderConfigurer并将文件的位置指定为classpath*:a.properties(见下文)
  2. 放置a.properties在 WAR 文件之外的类路径上的任何位置。

警告!当然,您现在可以独立于释放 WAR 文件来编辑属性,但由于 Spring 在应用程序启动时初始化 bean,并且由于所有 bean 默认情况下都是单例,因此在重新启动应用程序之前,对属性文件的更改不会生效。

XML 示例

<bean class="....PropertyPlaceholderConfigurer">
  <property name="location" value="classpath*:a.properties" />
于 2013-06-04T18:47:38.617 回答