Обработка файлов * -context.xml и applicationContext.xml в приложении Spring - PullRequest
3 голосов
/ 29 июня 2011

Я использую Spring Web MVC в качестве внешнего интерфейса в режиме гибернации с транзакциями (все с учетом аннотаций).Я настраиваю web.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>wdman</display-name>

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

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

<servlet>
    <servlet-name>wdman</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>wdman</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<!-- Disables Servlet Container welcome file handling.
     Needed for compatibility with Servlet 3.0 and Tomcat 7.0 -->
<welcome-file-list>
    <welcome-file></welcome-file>
</welcome-file-list>    

</web-app>

Я не понимаю, как такие параметры, как <tx:annotation-driven/>, наследуются от корневого контекста (в данном случае один определенный applicationContext.xml) для * -servlet.xmlконтекст.Кажется, он не работает.У меня есть component-scan в обоих этих файлах, чтобы приложение работало.Это нормально?Разве компоненты не дублируются?

Не могли бы вы помочь или указать на некоторую краткую документацию, описывающую, как эти контексты объединяются?

1 Ответ

3 голосов
/ 29 июня 2011

Я не понимаю, как такие параметры, как <tx:annotation-driven/> наследуются от корневого контекста (в данном случае тот, который определен applicationContext.xml) до *-servlet.xml context

Они не 'т.Эти настройки являются локальными для контекста.

У меня есть component-scan в обоих этих файлах, чтобы приложение работало.Это нормально?Разве компоненты не дублируются?

Если у вас одинаковая конфигурация component-scan в каждом контексте, то да, компоненты будут дублироваться.Вы можете указать сканирование только для создания экземпляров компонентов, необходимых для каждого контекста.

Однако компоненты, определенные в applicationContext.xml , видимы для дочернего контекста, так что выдолжен иметь возможность сохранить компонентное сканирование в родительском контексте и оставить его вне дочернего контекста.Как правило, в контексте сервлета необходимо декларировать только специфичные для MVC вещи, и эти bean-компоненты могут ссылаться на bean-компоненты, определенные в parent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...