您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

请简述Spring MVC的执行流程

时间:2022-04-20 09:46:36  来源:  作者:Tom弹架构

今天我给大家介绍一下Spring MVC的详细执行流程。我把Spring MVC的执行流程划分为三个阶段,配置阶段、初始化阶段和运行阶段。

请简述Spring MVC的执行流程

 

我整理了一张完整的执行流程图,需要高清图的小伙伴可以私信我。下面详细介绍每个阶段的执行细节。

1、第一阶段:配置阶段

配置阶段,主要是完成对xml配置和注解配置。

具体步骤如下:

首先,从web.xml开始,配置DispatcherServlet的url匹配规则和Spring主配置文件的加载路径

然后,就是配置注解,比如@Controller、@Service、@Autowrited以及@RequestMApping等。

2、第二阶段:初始化阶段

初始化阶段,主要是加载并解析配置信息以及IoC容器、DI操作和HandlerMapping的初始化。

具体步骤如下:

首先,Wer容器启动以后,会由Web容器自动调用DispatcherServlet的init()方法。

然后,在init()方法中,会初始化IoC容器,IoC容器其实就是个Map。

紧接着,根据配置好的扫描包路径,扫描出相关的类,并利用反射进行实例化,存放到IoC容器中。

缓存之后,Spring将再次迭代扫描IoC容器中的实例,给需要自动赋值的属性自动赋值。哪些属性需要自动赋值呢?比如加了@Autowrited的属性。

最后,读取@RequestMapping注解,获得请求url,将url和Method建议一对一的映射关系并缓存起来。我们可以简单粗暴地理解为缓存在一个Map中,它的Key就是url,它的值是Method。

 

3、第三阶段:运行阶段

运行阶段,在Spring启动以后,等待用户请求,完成内部调度并返回响应结果。

具体步骤如下:

用户在浏览器输入url之后,Web容器会接收到用户请求。Web容器会自动调用doGet()或者doPost()方法。从doGet()或者doPost()方法中,我们可以获得两个对象,分别是request和response。通过request可以获得用户请求带过来的信息,通过response可以往浏览器端输出响应结果。

然后,根据request中获得的请求url,可以从HandlerMapping中找到对应Method。

接着,还是利用反射调用方法,将获得方法调用的返回结果。

最后,将返回结果通过response输出到浏览器,用户就可以看到响应结果。

 

都已经看到这里了,大家是不是觉得Spirng MVC执行流程非常简单?

 

我是被编程耽误的文艺Tom,如果大家还有其他疑问,可以在评论区留言。如果本次面试解析对你有帮助,请动动手指一键三连分享给更多的人。关注我,面试不再难!

关注微信公众号『 Tom弹架构 』回复“Spring”可获取完整源码。 。

本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。关注微信公众号『 Tom弹架构 』可获取更多技术干货!



Tags:Spring MVC   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
玩转Spring MVC自定义请求匹配规则
在本文中,介绍了如何自定义RequestMappingHandlerMapping。通过自定义getCustomMethodCondition()方法,我们可以根据特定的需求扩展HandlerMapping的行为,并使用自定义条件来匹...【详细内容】
2023-12-06  Search: Spring MVC  点击:(209)  评论:(0)  加入收藏
Spring MVC的工作流程
1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求后,调用HandlerMapping处理器映射器3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行...【详细内容】
2023-11-02  Search: Spring MVC  点击:(272)  评论:(0)  加入收藏
Spring MVC工作流程,你学会了吗?
一、需求开发过程需求:前端浏览器请求url: http://localhost:8080/demo/handle01,前端⻚面显示后台服务器的时间开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻...【详细内容】
2023-05-06  Search: Spring MVC  点击:(357)  评论:(0)  加入收藏
Spring MVC核心功能异常处理机制原理详解
如果在请求映射期间发生异常或从请求处理程序(例如@Controller)抛出异常,DispatcherServlet将委托给HandlerExceptionResolver bean链来解决异常并提供替代处理,这通常是一个...【详细内容】
2023-02-23  Search: Spring MVC  点击:(123)  评论:(0)  加入收藏
Spring MVC 的请求处理机制
Spring MVC 的请求处理流程 DispatcherServletDispatcherServlet继承结构 DispatcherServlet对请求的处理流程大致步骤 绑定⼀些 Attribute WebApplicationContext / Loc...【详细内容】
2022-11-08  Search: Spring MVC  点击:(296)  评论:(0)  加入收藏
简单配置spring mvc,防止xss注入
1.针对url传参或form表单传参@InitBinderpublic void initBinder(final WebDataBinder webdataBinder) { //去除首尾空格 webdataBinder.registerCustomEditor(String...【详细内容】
2022-06-24  Search: Spring MVC  点击:(508)  评论:(0)  加入收藏
请简述Spring MVC的执行流程
今天我给大家介绍一下Spring MVC的详细执行流程。我把Spring MVC的执行流程划分为三个阶段,配置阶段、初始化阶段和运行阶段。 我整理了一张完整的执行流程图,需要高清图的小...【详细内容】
2022-04-20  Search: Spring MVC  点击:(324)  评论:(0)  加入收藏
手撸了一个 Spring MVC 框架
想要了解Spring MVC框架的原理,探究框架是如何设计的,不错的学习方式是阅读源码,然后自己手写一个框架。本文带领大家简化的手写一个Spring MVC框架。Spring框架对于Java后端程...【详细内容】
2021-09-22  Search: Spring MVC  点击:(235)  评论:(0)  加入收藏
Spring MVC 框架搭建配置方法及详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了...【详细内容】
2021-05-27  Search: Spring MVC  点击:(438)  评论:(0)  加入收藏
还搞不清Spring 与 Spring MVC 容器之间的关系?
在使用Spring MVC的时候,标准的配置是如下这样的: 注意注意:小编整理了一份Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC,有需要的朋友可以私信“spring”免费...【详细内容】
2021-04-13  Search: Spring MVC  点击:(453)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(7)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(17)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(13)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(15)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(9)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(40)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(23)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(123)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(132)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(130)  评论:(0)  加入收藏
站内最新
站内热门
站内头条