SpringMVC核心流程解析

SpringMVC核心流程解析

DispatcherServlet的继承关系

DispatcherServlet本质是一个servlet,既然是servlet,一个请求过来的时候,会首先执行servlet的service方法

请求流程分析

这里可以看到service方法已被父类FrameworkServlet重写,代理会执行到父类FrameworkServlet的service方法中

这里看到我们的常用请求GET、POST还是会交由FrameworkServlet的父类HTTPServlet .service方法来进行处理

FrameworkServlet重写了实际执行的doGet、doPost方法


获取HandlerChain(Controllrt+Method+拦截器)


handlerMappings是系统内置的处理url和handler关系的类,此处使用的是策略模式的思想。

获取HandlerAdapter

此处Handler会有多种类型(见下图,每一种实现方式都是一种不同的Handler),所以此处需要找到能正确处理的此handler的处理类,

例如:



实际执行handler方法

一路执行到这里,调用对象进行封装

请求参数解析
门面模式是典型的迪米特原则实现,最少知识原则!

handlerMappings的初始化过程


RequestMappingHandlerMapping会被加载到spring的容器,执行类的初始化操作

执行RequestMappingHandlerMapping的afterPropertiesSet方法




相关推荐
BlockChain888几秒前
MPC 钱包实战(三):Rust MPC Node + Java 调度层 + ETH 实际转账(可运行)
java·开发语言·rust
Remember_9932 分钟前
【数据结构】Java集合核心:线性表、List接口、ArrayList与LinkedList深度解析
java·开发语言·数据结构·算法·leetcode·list
小旭95272 分钟前
【Java 面试高频考点】finally 与 return 执行顺序 解析
java·开发语言·jvm·面试·intellij-idea
陌路2010 分钟前
RPC分布式通信(2)---四种典型式线程池(1)
java·开发语言·c++
微露清风11 分钟前
系统性学习C++-第二十四讲-智能指针的使用及其原理
java·c++·学习
wenjianhai18 分钟前
若依(RuoYi-Vue-Plus)框架使用WebSocket
java·若依
Coder_Boy_19 分钟前
基于SpringAI的在线考试系统-核心模块的数据模型交互关系
java·数据库·人工智能·spring boot·交互
yaoxin52112320 分钟前
295. Java Stream API - 选择适用于并行计算的 BinaryOperator
java·开发语言
We....20 分钟前
SpringBoot 微服务拦截器与负载均衡实践
java·spring boot·微服务·负载均衡
冬至喵喵21 分钟前
RoaringBitmap与传统Bitmap
java·开发语言