Springmvc源码解析总结

754 阅读2分钟
原文链接: mp.weixin.qq.com

servlet与jsp执行过程

spring mvc本质上是对其进行封装简化了开发流程。易用性、程序逻辑结构更清晰
  • 基于注解的URL映谢

  • http表单参数转换

  • 全局统一异常处理

  • 拦截器的实现

  • 多视图控制器

基于DispatchServlet来设计一个mvc框架执行流程

dispatchServlet核心类结构

springmvc上下文初始过程

  • webApplicationContext 初始过程

  • handlerMappings 初始过程

  • handlerExceptionResolvers 初始过程

  • viewResolvers 初始过程

  • handleAdapters 初始过程

MVC上下文即xmlWebApplicationContext,依托DispatchServlet 的和contextConfigLocation进行创建和初始化,最后对mvc 进策略初始化。
  • 创建DispatchServlet

  • initServletBean

  • createWebAppl icationContext

  1. createBeanFactory

  2. oadBeanDefinitions(contextConfigLocation)

  3. registerBeanDefinition

IOC加载完比

  • initStrategies (初始化mvc 环境)

  1. initHandlerMappings (初始化 映谢配置)

  2. initHandlerAdapters(初始化适配器)

  3. initHandlerExcepti onResol vers

  4. initViewResolvers

request请求过程

  • 调用doDispatch()

  • 遍历handlerMappings 与request 获取一个执行链 getHandl er()

  • 遍历handleAdapters 与 handle 获取一个handle 适配器

  • 通过执行链去调用拦截器当中的 preHandle() 方法 ,进行预处理。

  • 基于handle 适配器 去调用handle 方法,返回 modelAndView

  • 通过执行链 去调用拦截器当中的 PostHandle() 方法 ,进行拦截处理。

  • processDispatchResult()

  1. 正常:调用render()进行视图解析

    1. 1 基于 遍历 viewResol vers 工与 viewname 获取View

    2. 2 调用view.render() 进行视图解析和返回,设置model 至request

  2. 异常:遍历handlerExceptionResolvers 调用resolveExcepti on(),返回mv,最后跳转至异常 mv

HandlerMapping实现类结构

  • BeanNameUrlHandlerMapping: 基于ioc name 中已/开头的Bean时行 注册至映谢.

  • SimpleUrlHandlerMapping:基于手动配置url与control映谢

  • RequestMappingHandlerMapping:基于注解方法配置对应映谢

HandlerAdapter 实现类结构图

ViewResolver 实现类图

推荐阅读

【资源分享】Docker核心技术视频教程

docker安装和常用命令&操作

使用jenkins发布应用到tomcat详细过程


本公众号会不定期给大家发福利,包括学习资源等,敬请期待吧!

推送内容如果现在工作用不上,可以先转发朋友圈或收藏,用的时候方便找。

另外欢迎公众号回复 微信 ,添加微信好友,互相学习交流。