<context: component-scan> не забирает мои @RequestMappings, если сопоставления обработчиков определены в XML - PullRequest
5 голосов
/ 18 сентября 2011

Я использую Spring 3.0.5 с аннотациями <context:component-scan> и @RequestMapping на моих контроллерах.Это работает, и URL регистрируются при сканировании пакета.

Но есть проблема, когда у меня есть отображение обработчика, определенное в конфигурации XML.@RequestMapping аннотации больше не собираются.

Я выделил проблему в простое приложение.

Если у меня есть следующий контроллер:

package test.pack.age;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {
    @RequestMapping(value="/test")
    public String showTestPage() {
        return "testPage";
    }
}

и следующая конфигурация:

<context:component-scan base-package="test.pack.age" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/WEB-INF/jsp/" />
  <property name="suffix" value=".jsp" />
</bean>

Приложение работает правильно, а URL /test зарегистрирован и работает правильно.

18/09/2011  20:02:55    org.springframework.web.servlet.handler.AbstractUrlHandlerMapping   INFO    Mapped URL path [/test] onto handler 'testController'
18/09/2011  20:02:55    org.springframework.web.servlet.handler.AbstractUrlHandlerMapping   INFO    Mapped URL path [/test] onto handler 'testController'

Но если я добавлю отображение обработчика в XML, оно будетбольше не работает.Даже что-то простое, как это:

<bean id="handlerMappings" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" />

, который в основном ничего не делает, и <context:component-scan> больше не регистрирует мой URL.

Мне нужно дополнительное отображение обработчика для некоторых (сторонних) контроллеровкоторый я не могу комментировать, но при добавлении он ломает все мои @RequestMapping с.

Это нормально?Жук?(Я не могу изменить версию Spring)

Я что-то упустил?

Ответы [ 2 ]

4 голосов
/ 19 сентября 2011

Это нормально?Жук?(Я не могу изменить версию Spring)

Я что-то упустил?

Я что-то упустил: D.Обнаружено, что это скрыто в JavaDocs Spring для DefaultAnnotationHandlerMapping :

ПРИМЕЧАНИЕ. Если вы определяете пользовательские компоненты HandlerMapping в контексте DispatcherServlet, вам необходимо явно добавить компонент DefaultAnnotationHandlerMapping, так как пользовательский компонент HandlerMappingbean-компоненты заменяют стандартные стратегии отображения.

Добавил это в мой XML-файл конфигурации, и теперь все работает:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
0 голосов
/ 18 сентября 2011

Я не уверен, почему ваш аннотированный Controller больше не принимается, но я думаю, что ваша проблема заключается в id, который вы предоставляете SimpleUrlHandlerMapping.Это должно быть handlerMapping.

...