По умолчанию Spring mvc определяет 3 разных адаптера обработчика запросов, они
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
Так что вам не нужно определять их в вашем контекстном файле, но если вы определяете хотя бы один адаптер обработчика в своемфайлы контекста, Spring не будет создавать адаптеры по умолчанию.
В вашей конфигурации вы используете <mvc:annotation-driven />
, в соответствии с этой документацией Spring это приведет к тому, что контекст определит и DefaultAnnotationHandlerMapping
, иAnnotationMethodHandlerAdapter
.Поскольку мы создаем AnnotationMethodHandlerAdapter
в нашем определении контекста, Spring не будет создавать два других адаптера handler.Вот почему вы получаете указанное исключение.
Для beanNameUrlMapping требуется обработчик adapter SimpleControllerHandlerAdapter
.
Чтобы устранить это исключение, вы можете просто создать новый бин типа "SimpleControllerHandlerAdapter" в вашем контексте.
<bean
class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
</bean>