栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis&SpringBoot(2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis&SpringBoot(2)

一、SpringMVC的底层工作流程

1.用户发送请求至前端控制器DispatcherServlet。

2.DispatcherServlet 收到请求调用HandlerMapping处理器映射器。

3.处理器映射器找到具体的处理器(可以根据xml 配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4.DispatcherServlet调用HandlerAdapter 处理器适配器。

5.HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)

6.Controller 执行完成返回ModelAndView。

7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet.

8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9.ViewReslover解析后返回具体View。

10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。11.DispatcherServlet响应用户。

二、SpringMVC的主要组件

Handler:也就是处理器。它直接应对着MVC中的C也就是Controller层,它的具体表现形式有很多,可以是类,也可以是方法。在Controller层中@RequestMapping标注的所有方法都可以看成是一个Handler,只要可以实际处理请求就可以是Handler
1、HandlerMapping
initHandlerMappings(context),处理器映射器,根据用户请求的资源uri来查找Handler的。在SpringMVC中会有很多请求,每个请求都需要一个Handler处理,具体接收到一个请求之后使用哪个Handler进行,这就是
HandlerMapping需要做的事。
2、HandlerAdapter
initHandlerAdapters(context),适配器。因为SpringMVC中的Handler可以是任意的形式,只要能处理请求就ok,但是Servlet需要的处理方法的结构却是固定的,都是以request和response为参数的方法。如何让固定的Servlet处理方法调用灵活的Handler来进行处理呢?这就是HandlerAdapter要做的事情。
Handler是用来干活的工具;HandlerMapping用于根据需要干的活找到相应的工具;HandlerAdapter是使用工具干活的人。

三、*SpringMVC工作流程

1)用户发送请求至前端控制器DispatcherServlet。
2) DispatcherServlet收到请求调用HandlerMapping 处理器映射器。
3)处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4) DispatcherServlet调用HandlerAdapter处理器适配器。
5) HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)6) Controller执行完成返回ModelAndView。
7) HandlerAdapter将controller 执行结果ModelAndView返回给DispatcherServlet。 8) DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9) ViewReslover解析后返回具体View。
10)DispatcherServlet 根据View进行渲染视图(即将模型数据填充至视图中)。11) DispatcherServlet响应用户。

四、SpringMVC中的控制器是不是单例模式?如果是,如何保证线程安全?

控制器肯定是单例模式,单例模式就会有线程安全问题。

Spring中保证线程安全的方法:

1.将scop设置成非singleton。例如prototype,request。缺点会给服务器带来很多垃圾,不常用。

2.最好的方法是将控制器Contorller设置成无状态模式.在控制器中不要携带数据,但是可以引用无状态的service和dao。

@Component
@Contorller
public class A{
	@Autowired
	public XXXService service;
	
	publec viod sout(){
		System.out.println("======= A =======")
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337281.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号