请简述Spring MVC的执行流程

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

需要面试文档可S我


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

febe9b1830cd0ad33565ee856e605562.png 

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


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弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!

如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。

相关文章
|
1天前
|
JSON 前端开发 Java
Spring Web MVC入门(3)——响应
Spring Web MVC入门(3)——响应
6 1
|
1天前
|
存储 前端开发 Java
Spring Web MVC入门(2)——请求(下)
Spring Web MVC入门(2)——请求
11 0
|
1天前
|
JSON 前端开发 Java
Spring Web MVC入门(2)——请求(上)
Spring Web MVC入门(2)——请求
8 0
|
1天前
|
设计模式 前端开发 Java
Spring Web MVC入门(1)
Spring Web MVC入门(1)
4 0
|
8天前
|
存储 JSON 前端开发
利用Spring MVC开发程序2
利用Spring MVC开发程序
16 1
|
8天前
|
设计模式 JSON 前端开发
利用Spring MVC开发程序1
利用Spring MVC开发程序
19 0
|
8天前
|
存储 前端开发 Java
Spring MVC
Spring MVC
20 2
|
19天前
|
前端开发 Java 关系型数据库
使用IDEA搭建一个Spring + AOP (权限管理 ) + Spring MVC
使用IDEA搭建一个Spring + AOP (权限管理 ) + Spring MVC
|
8月前
|
XML 前端开发 安全
Spring Mvc 拦截器详解
Spring Mvc 拦截器详解
71 0
|
7月前
|
前端开发 Java Spring
Spring MVC拦截器+注解方式实现防止表单重复提交
Spring MVC拦截器+注解方式实现防止表单重复提交