В дополнение к ответу Скаффмана: вы можете включить контроллеры старого стиля, не удаляя <mvc:annotation-driven>
, объявив сопоставления обработчиков старого стиля и адаптеры обработчиков вручную:
<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
Пояснение:
Когда DispatcherServlet
не может найти HandlerMapping
s и HandlerAdapter
s, объявленные в контексте, он регистрирует сопоставления по умолчанию (BeanNameUrlHandlerMapping
и DefaultAnnotationHandlerMapping
) и адаптеры (HttpRequestHandlerAdapter
, SimpleControllerHandlerAdapter
и AnnotationMethodHandlerAdapter
), поэтому в простом случае все работает без явной настройки. Однако если вы явно объявляете некоторые сопоставления или адаптеры, настройки по умолчанию не применяются, поэтому, если вам нужны другие сопоставления и адаптеры, вы должны также объявить их явно.
Теперь <mvc:annotation-driven>
явно объявляет DefaultAnnotationHandlerMapping
и AnnotationMethodHandlerAdapter
, эффективно отключая другие сопоставления и адаптеры по умолчанию, поэтому вам нужно объявить их вручную.