从另一个模块上下文访问属性文件

时间:2013-06-04 17:16:48

标签: spring maven properties

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

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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

  1. a.properties放入JAR模块中的src/main/resources
  2. 使用PropertyPlaceholderConfigurer在Spring上下文中提供属性
  3. 它将被打包在JAR的根目录
  4. JAR结束于WAR的WEB-INF/lib,这又是“类路径的根”,可以这么说
  5. 更新,2013-06-09

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

    基本上你看起来要寻找的东西(仍然不太确定)是如何从与WAR / JAR打包的的属性文件中加载属性。

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

    1. 使用PropertyPlaceholderConfigurer并将文件的位置指定为classpath*:a.properties(见下文)
    2. a.properties放在WAR文件外的类路径上的任何位置。
    3. 警告!当然,您现在可以独立于发布WAR文件编辑属性,但由于Spring在应用程序启动时初始化bean,并且由于默认情况下所有bean都是单例,因此在重新启动应用程序之前,对属性文件的更改将不会生效。

      XML示例

      <bean class="....PropertyPlaceholderConfigurer">
        <property name="location" value="classpath*:a.properties" />