代码之家  ›  专栏  ›  技术社区  ›  ScArcher2

如何将SpringXML配置移到web应用程序之外?

  •  6
  • ScArcher2  · 技术社区  · 17 年前

    最好的方法是什么?

    3 回复  |  直到 17 年前
        1
  •  7
  •   Pascal Thivent    17 年前

    正如罗德·约翰逊在书中解释的那样 this thread :

    你可以使用 classpath: WEB-INF 和类路径。

    因此,将配置文件放在webapp之外的类路径中的某个位置,并在 web.xml

    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springContext*.xml</param-value>
    </context-param>
    

    我认为依赖类路径比使用绝对文件路径更具可移植性。

        2
  •  2
  •   ChssPly76    17 年前

    您可以将其移动到某个文件夹(webapp结构之外),并显式指定上下文位置,以指向您的应用程序中该文件夹中的上下文 web.xml

    <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>file:/full/path/to/context.xml</param-value>
    </context-param>
    

    也就是说 最好的 实现这一点的方法可能是根本不做:-),而是重新考虑如何部署应用程序(例如,您可以创建包含更改的“补丁”或“升级”部署单元,而不是完整的WAR)。指定绝对路径往往比它的价值更麻烦。

        3
  •  0
  •   Will Hartung    17 年前

    当这是一个部署问题时,为什么要使构建复杂化呢。大多数容器以“分解”形式部署WAR,这意味着文件系统中的某个地方是spring.xml文件。

    如果您想更新它,只需找到实际位置,然后将新的spring.xml复制到旧的spring.xml上即可。然而,与此同时,你们的战争仍然是真理的源泉。

    因此,您可以通过在容器后面直接编辑(或复制)spring.xml来更新它。

    最后,将spring.xml放在WAR之外意味着它对您的所有WAR都可用,如果您稍后决定向系统中添加另一个WAR,您可能很难将这两个文件分离,因为它们不再固定到特定的WAR。