我使用 Maven。我的 Web 应用程序包含两个模块,每个模块都有自己的 spring 上下文。第一个被装到罐子里,第二个被装到战争中。第二个使用第一个模块的 jar 并调用它的方法。
我需要添加属性文件,该文件将由第一个模块(通过 spring 上下文)使用。主要问题是我应该能够在战争部署后访问/编辑此属性文件。
我怎样才能提供这样一个属性文件,它将在第一个 jar 模块中使用并且可以在 war 模块部署后更改?
谢谢。
我使用 Maven。我的 Web 应用程序包含两个模块,每个模块都有自己的 spring 上下文。第一个被装到罐子里,第二个被装到战争中。第二个使用第一个模块的 jar 并调用它的方法。
我需要添加属性文件,该文件将由第一个模块(通过 spring 上下文)使用。主要问题是我应该能够在战争部署后访问/编辑此属性文件。
我怎样才能提供这样一个属性文件,它将在第一个 jar 模块中使用并且可以在 war 模块部署后更改?
谢谢。
抱歉,没有看到问题,您需要更好地描述它。据我了解,这是要走的路:
a.properties
JARsrc/main/resources
模块PropertyPlaceholderConfigurer
使属性在 Spring 上下文中可用WEB-INF/lib
WAR 中,这又是“类路径的根”,可以这么说更新,2013-06-09
(问题已根据对上述初始答案的评论进行了更新)
本质上,您似乎正在寻找(仍然不太确定)是如何从未与您的 WAR/JAR 打包的属性文件中加载属性。
在这种情况下,您可以跳过除 2 之外的所有上述步骤。
PropertyPlaceholderConfigurer
并将文件的位置指定为classpath*:a.properties
(见下文)a.properties
在 WAR 文件之外的类路径上的任何位置。警告!当然,您现在可以独立于释放 WAR 文件来编辑属性,但由于 Spring 在应用程序启动时初始化 bean,并且由于所有 bean 默认情况下都是单例,因此在重新启动应用程序之前,对属性文件的更改不会生效。
XML 示例
<bean class="....PropertyPlaceholderConfigurer">
<property name="location" value="classpath*:a.properties" />