Spring MVC 源码时序图

源码入口

在这里插入图片描述

  1. HttpServletBean类调用了 Init初始化 方法 改方法中 最为重点的方法是initServletBean方法
    在这里插入图片描述

  2. initServletBean方法是在FrameworkServlet类中实现的 该方法中最为重要的方法为initWebApplicationContext 初始化webApplication
    在这里插入图片描述

  3. initWebApplicationContext方法中 最为两个重要的方法:initWebApplicationContext(此方法调用了AbstatctApplication中的refresh 初始化ioc)
    在这里插入图片描述

  4. initWebApplicationContext 方法还会调用onRefresh()方法 此方法会去
    回调DispatcheServelet 中的initStrategies方法 去初始化mvc的九大组件
    在这里插入图片描述

接下来是mvc的调用阶段 同样我们从入口开始

  1. mvc的调用阶段如果 是从DispatcherServlet类中的doService方法中执行的
    在这里插入图片描述

  2. doService中最为主要的方法是doDispatch()方法
    在这里插入图片描述

  3. doDispatch方法中分为四个重要的步骤
    ①.checkMultipart(request) :检查是否为上传文件的请求

    ②.getHandler(processedRequest): 取得处理当前请求的hanlder,处理器(controller) 这里返回的是一个HandlerExecutionChain请求处理器链对象该对象封装了handler和interceptors

    ③.getHandlerAdapter(mappedHandler.getHandler()); 获取处理request的处理器适配器handler adapter

    ④.ha.handle(processedRequest, response, mappedHandler.getHandler()): 返回视图结果的处理

    其中也需要注意的一个方法是mappedHandler.applyPreHandle拦截处理

在这里插入图片描述

  1. 回到 初始化mvc的九大组件 其中initHandlerMappings初始化 HandlerMapping
    initHandlerMappingsw调用了BeanFactoryUtils.beansOfTypeIncludingAncestors 获取一个map 其中key是Handler名称,value是HandlerMapping 之后操作把map中的value值取出来 然后存进list中 去排序

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值