Spring MVC调用流程解析

DispatcherServlet拦截全部web请求
void doService(HttpServletRequest request, HttpServletResponse response) throws Exception
      调用里面的void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception
      校验文件上传:processedRequest = checkMultipart(request);
      处理器调用链:HandlerExecutionChain mappedHandler = getHandler(processedRequest);
      处理器适配器:HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
      处理器前置:mappedHandler.applyPreHandle(processedRequest, response)
      实际处理:mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
      处理器后置:mappedHandler.applyPostHandle(processedRequest, response, mv);
      结果集处理:processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
      异常里面的后置处理:triggerAfterCompletion(processedRequest, response, mappedHandler, ex);

Spring是怎么把controller解析成handler的:
org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser
    容器先解析controller成BeanDefinition parse(Element element, ParserContext parserContext)
    Handler根据class去beanFactory获取对应bean
    HandlerMapping集合:matchingBeans=BeanFactoryUtils.beansOfTypeIncludingAncestors(context, HandlerMapping.class, true, false);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值