I recently upgraded to spring 3.2 and noticed that AnnotationMethodHandlerAdapter
had been deprecated in favor of RequestMappingHandlerAdapter
. So I reconfigured to use the new class, complete with a custom MessageConverter
I need. All fine and good.
However, when attempting to hit a URL supported by an annotated Controller
, I'm getting an error:
[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)
When debugging the dispatcher, and in particular, the Dispatcher.getHandlerAdapter()
method, it's finding my HandlerAdapter
, but the AbstractHandlerMethodAdapter.supports()
that is invoked wants a MethodHandler
:
public final boolean supports(Object handler) {
return handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler);
}
and the controller is not a HandlerMethod
. The AnnotatedMethodHandlerAdapter
's support method is.. well, different (and works still!)
public boolean supports(Object handler) {
return getMethodResolver(handler).hasHandlerMethods();
}
So I apparently cannot simply upgrade to the new class... I'm missing some additional configuration, but the documentation isn't really helping me out. Any ideas?
Thanks.