我最近升级到 spring 3.2 并注意到它AnnotationMethodHandlerAdapter
已被弃用,取而代之的是RequestMappingHandlerAdapter
. 所以我重新配置以使用新类,完成MessageConverter
我需要的自定义。一切都很好。
但是,当尝试访问 annotated 支持的 URL 时Controller
,出现错误:
[java] javax.servlet.ServletException: No adapter for handler [my.company.TagController@1c2e7808]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
[java] at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1128)
[java] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:903)
[java] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
在调试调度程序时,特别是Dispatcher.getHandlerAdapter()
方法,它正在寻找 my HandlerAdapter
,但AbstractHandlerMethodAdapter.supports()
被调用的需要一个MethodHandler
:
public final boolean supports(Object handler) {
return handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler);
}
并且控制器不是HandlerMethod
. 的AnnotatedMethodHandlerAdapter
支持方法是......好吧,不同(并且仍然有效!)
public boolean supports(Object handler) {
return getMethodResolver(handler).hasHandlerMethods();
}
所以我显然不能简单地升级到新课程......我错过了一些额外的配置,但文档并没有真正帮助我。有任何想法吗?
谢谢。