XML-файлы Spring за пределами WEB-INF - PullRequest
3 голосов
/ 19 июля 2010

Я работаю в многомодульном проекте maven2 с использованием Spring и GWT.Допустим, у меня есть два подпроекта: сервис и презентация.«service» содержит фактические реализации сервисов, а «presentation» отвечает за их упаковку для GWT.

Я успешно загрузил файлы Spring XML, которые находятся в каталоге WEB-INF (так же, как web.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 не загружается.Я что-то упустил?

Ответы [ 3 ]

2 голосов
/ 19 июля 2010

Я предполагаю, что презентационный проект скомпилирован как WAR, а сервисный проект скомпилирован как JAR.Кроме того, что презентационный проект зависит от проекта сервисов.

В этом случае включите файл spring-services.xml в качестве ресурса в pom проекта сервисов, чтобы он входил в его флягу, и поскольку проект презентацииВ зависимости от проекта сервисов, jar сервисов будет помещен в папку /WEB-INF/lib, и Spring сможет загрузить его из classpath.

1 голос
/ 19 июля 2010

Если значение начинается с classpath:, оно не будет выглядеть в папке WEB-INF/, оно будет выглядеть в classpath, который является WEB-INF/classes и прямым содержимым всех файлов jar в WEB-INF/lib/.

Чтобы она выглядела в папке WEB-INF /, вам нужно указать это значение следующим образом:

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

(вы можете поместить их в одну строку, разделенную запятой, но мне это нравится)

0 голосов
/ 20 июля 2010

используйте

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

в верхней части spring-presentation.xml вместо ссылки на него из web.xml

...