源码入口

Spring MVC 源码时序图

  1. HttpServletBean类调用了 Init初始化 方法 改方法中 最为重点的方法是initServletBean方法
    Spring MVC 源码时序图

  2. initServletBean方法是在FrameworkServlet类中实现的 该方法中最为重要的方法为initWebApplicationContext 初始化webApplication
    Spring MVC 源码时序图

  3. initWebApplicationContext方法中 最为两个重要的方法:initWebApplicationContext(此方法调用了AbstatctApplication中的refresh 初始化ioc)
    Spring MVC 源码时序图

  4. initWebApplicationContext 方法还会调用onRefresh()方法 此方法会去
    回调DispatcheServelet 中的initStrategies方法 去初始化mvc的九大组件
    Spring MVC 源码时序图

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

  1. mvc的调用阶段如果 是从DispatcherServlet类中的doService方法中执行的
    Spring MVC 源码时序图

  2. doService中最为主要的方法是doDispatch()方法
    Spring MVC 源码时序图

  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拦截处理

Spring MVC 源码时序图

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

Spring MVC 源码时序图

相关文章:

  • 2021-06-22
  • 2018-03-30
  • 2018-09-19
  • 2021-05-24
  • 2021-11-30
  • 2021-12-16
  • 2021-07-09
  • 2021-07-28
猜你喜欢
  • 2019-03-18
  • 2021-05-20
  • 2021-04-20
  • 2021-07-19
  • 2021-12-21
  • 2019-06-01
  • 2020-12-29
  • 2021-05-07
相关资源
相似解决方案