lihongjie0209 / myblog

4 stars 0 forks source link

Spring MVC: HandlerAdapter 调用映射的对象 #274

Open lihongjie0209 opened 3 years ago

lihongjie0209 commented 3 years ago

Spring MVC 的流程是

  1. 在项目启动时把需要暴露给web的对象集中记录 (handlerMapping)
  2. dispatch servlet 通过handlerMapping 找到映射的对象/方法
  3. 然后设配参数调用相关的方法 (HandlerAdapter)
lihongjie0209 commented 3 years ago

org.springframework.web.servlet.HandlerAdapter


public interface HandlerAdapter {

    boolean supports(Object handler); // 判断是否可以适配当前的handler 

       // 进行调用 返回mv
    @Nullable
    ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;

    long getLastModified(HttpServletRequest request, Object handler);

}

实现比较简单, 确定是否是HandlerMethod的实例就可以了

    @Override
    public final boolean supports(Object handler) {
        return (handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler));
    }