org.springframework.web.servlet.DispatcherServlet#doDispatch中
/**
* 3.根据mappedHandler HandlerExecutionChain HandlerAdapter适配器
*/
// Determine handler adapter for the current request.
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
getHandlerAdapter方法
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException {
if (this.handlerAdapters != null) {
for (HandlerAdapter adapter : this.handlerAdapters) {
/**
循环判断哪个
*/
if (adapter.supports(handler)) {
return adapter;
}
}
}
HttpRequestHandlerAdapter
如果实现了HttpRequestHandler就走这个
public class HttpRequestHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
//判断 下类型
return (handler instanceof HttpRequestHandler);
}
SimpleControllerHandlerAdapter
如果是实现了Controller接口就走这个
public class SimpleControllerHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
return (handler instanceof Controller);
}
RequestMappingHandlerAdapter
public final boolean supports(Object handler) {
return (handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler));
}