контекстно-зависимый фильтр компонентов сканирования

Мое веб-приложение на основе SpringMVC обычно использует 2 контекста: контекст веб-приложения для сервлета диспетчера MVC и контекст родительского / корневого приложения.

<!-- the context for the dispatcher servlet -->
<servlet>
    <servlet-name>webApp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
....
<!-- the context for the root/parent application context -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:root-context.xml</param-value>
</context-param>

В этих контекстах я использую сканирование компонентов для загрузки всех компонентов. Мои пакеты названы в соответствии с их сценарием использования (например, com.abc.registration, com.abc.login и т. Д.), А не в зависимости от технологического уровня (например, com.abc.dao, com.abc.services и т. Д.) )

Теперь мой вопрос: чтобы избежать дублирования сканирования некоторых классов, рекомендуется ли фильтровать классы компонентов-кандидатов для обоих контекстов, например включить только контроллер MVC для сканирования веб-контекста и включить все остальные компоненты (службы, dao / репозиторий) в контекст корневого приложения?

<!-- servlet-context.xml -->
<context:component-scan base-package="com.abc.myapp" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!-- root-context.xml -->
<context:component-scan base-package="de.efinia.webapp">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

Или не важно и не нужно избегать такого дублирования при сканировании компонентов?

5
задан Dominik 30 September 2011 в 11:43
поделиться