【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)

简介: 【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)

承接相关之前的SpringMVC的框架技术的流程分析


image.png

初始化流程(initStrategies)

image.png


执行流程


寻找相关HandlerMapping


请求到DispatcherServlet类进行执行相关的HandlerMapping集合,找到对应类型的HandlerMapping对象的实现类,如果是一般的采用注解(@RequestMapping)注入的实现类

(RequestMappingHandlerMapping)类,


HandlerMapping实现类之RequestMappingHandlerMapping对象


找出Spring容器中被@Controller/@RestController注解修饰的bean以及被@RequestMapping注解修饰的类和方法。


HandlerMapping属性的HandlerMethod对象


HandlerMethod是Method以及Parameter的helper class。在HandlerMapping中被构造, 并在HandlerAdapter中被使用。


HandlerExecutionChain对象


当获取到对应的HandlerMapping对象的实现类后,接下来返回到DispatcherServlet类对象,需要构建或者获取相关的HandlerExecutionChain对象,内部包含了很多额外组件,例如:interceptor拦截器。


HandlerAdapter对象


根据HandlerExecutionChain中的Handler,在对应的HandlerAdapter集合找到支持此Handler的HandlerAdapter,调用相关的HandlerMethod对象方法,使用HandlerAdapter得到ModelAndView对象返回到DispatcherServlet。


RequestMappingHandlerAdapter


找到的对应的RequestMapping的HandlerAdapter对象的实现类RequestMappingHandlerAdapter对象操作处理。


HandlerInterceptor拦截器


  • 前置拦截器:HandlerInterceptor-preHandle
  • 后置拦截器:HandlerInterceptor-postHandle


HandlerExceptionResolver异常处理


上面的操作处理方式可能会发生异常,使用HandlerExceptionResolver策略解决。


RequestMappingHandlerAdapter的处理操作


  • HandlerMethodArgumentResolverComposite:该对象处理和包含了内部多个HandlerMethodArgumentResolver集合。
  • HandlerMethodArgumentResolver:解析相关的方法入口参数的解析机制!
  • HandlerMethodReturnValueHandlerComposite:该对象处理和包含了内部多个的HandlerMethodReturnValueHandler集合。
  • HandlerMethodReturnValueHandler:该对象处理和操作方法的返回值



HandlerMethodArgumentResolver参数入口的解析器


RequestParamMethodArgumentResolver

处理@RequestParam注解修饰的参数:HandlerMethodArgumentResolver的实现类之一:


RequestParamMethodArgumentResolver

RequestResponseBodyMethodProcessor

处理@RequestBody注解修饰的参数:HandlerMethodArgumentResolver的实现类



HandlerMethodReturnValueHandler参数返回操作解析器


RequestResponseBodyMethodProcessor

处理@ResponseBody注解修饰的返回值:HandlerMethodReturnValueHandler的实现类


ModelAndViewMethodReturnValueHandler

处理返回值类型为ModelAndView对象返回值:HandlerMethodReturnValueHandler的实现类


ViewResolver视图解析器

将ModelAndView的对象数据与数据页面模板进行解析处理操作ViewResolver对象,生成相关的View对象。并且返回相关的response:freemarker, jsp. json, xml等。


HandlerInterceptor的收官处理

最终完成拦截器:afterCompletion方法操作。




相关文章
|
3月前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
3月前
|
Java
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
29天前
|
Java Spring 容器
Spring底层原理大致脉络
Spring底层原理大致脉络
|
1月前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
120 9
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
53 2
|
1月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
143 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
98 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
1月前
|
XML 前端开发 Java
拼多多1面:聊聊Spring MVC的工作原理!
本文详细剖析了Spring MVC的工作原理,涵盖其架构、工作流程及核心组件。Spring MVC采用MVC设计模式,通过DispatcherServlet、HandlerMapping、Controller和ViewResolver等组件高效处理Web请求。文章还探讨了DispatcherServlet的初始化和请求处理流程,以及HandlerMapping和Controller的角色。通过理解这些核心概念,开发者能更好地构建可维护、可扩展的Web应用。适合面试准备和技术深挖
42 0
|
1月前
|
负载均衡 Java API
Spring Cloud原理详解
Spring Cloud原理详解
64 0
下一篇
无影云桌面