3

我正在一个使用 Spring 和 GWT 的多模块 maven2 项目中工作。假设我有两个子项目:服务和演示。“service”包含服务的实际实现,“presentation”负责为 GWT 包装它们。

我已经成功加载了 WEB-INF 目录(与 web.xml 相同)中的 Spring XML 文件,但是我遇到了应该从其他模块加载的那些 XML 文件的问题。

我的 web.xml 看起来像这样:

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

 <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>
      classpath:/spring-presentation.xml, classpath:/spring-services.xml
     </param-value>
 </context-param>

spring-presentation.xml是在演示项目spring-services.xml中,在服务项目中。spring-services.xml文件未加载。我错过了什么吗?

4

3 回答 3

2

我猜演示项目被编译为 WAR,服务项目被编译为 JAR。此外,演示项目依赖于服务项目。

在这种情况下,将spring-services.xml文件作为资源包含在服务项目的 pom 中,以便它进入它的 jar,并且由于演示项目依赖于服务项目,服务 jar 将被放入/WEB-INF/lib文件夹中,然后 Spring 将能够从类路径加载它。

于 2010-07-19T18:37:22.230 回答
1

如果该值以它开头,classpath:它不会在WEB-INF/文件夹中查找,它将在类路径中查找,这是.WEB-INF/classes目录下所有 jar 文件的直接内容WEB-INF/lib/

要使其在 WEB-INF/ 文件夹中显示,您需要指定如下值:

<param-value>
  /WEB-INF/spring-presentation.xml
  /WEB-INF/spring-services.xml
</param-value>

(你可以把它们放在用逗号分隔的一行,但我喜欢这样)

于 2010-07-19T18:35:15.707 回答
0

采用

<import resource="classpath:spring-services.xml" />

在顶部spring-presentation.xml而不是从 web.xml 中引用它

于 2010-07-19T23:08:59.093 回答