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));
}