По умолчанию Spring MVC определяет 3 различных адаптеров обработчика запроса, они
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
Так что вам не нужно иметь, чтобы определить их в файле контекста, но если вы определить, по крайней мере, один адаптер адаптера в ваших файлах контекста, весна не будет создавать адаптеры по умолчанию.
В вашей настройке программы вы используете <mvc:annotation-driven />
, согласно this яровой документации это приведет контекст, чтобы определить как DefaultAnnotationHandlerMapping
и AnnotationMethodHandlerAdapter
. Поскольку мы создаем AnnotationMethodHandlerAdapter
, в нашем контексте определение Spring не создаст двух других handlerAdapters. Вот почему вы получаете указанное исключение.
BeanNameUrlMapping нужен handlerAdapter SimpleControllerHandlerAdapter
.
Чтобы устранить это исключение, вы можете просто создать новый компонент типа «SimpleControllerHandlerAdapter» в вашем контексте.
<bean
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
</bean>
Это простой ответ, отличное объяснение :) –
Это было нелегко найти. Но в конце концов. Отличное объяснение. Я добавлял поддержку аннотаций и не хотел одновременно переносить все контроллеры. – panther
Это сработало для меня, добавив SimpleControllerHandlerAdapter. Благодаря! – Ricardo