(1)前端控制器dispatcherservlet(配置再试一下)
功能:中央处理器,可以接收只是请求,自己不做任何处理,完全是将请求发送中给其他组件进行处理。dispatcherservlet是整个流程的控制中心。
(2)处理器映射器handlermapping(配置去掉)
功能:据dispatcherservlet正在发送的url各位路径查找handler
常见的处理器映射器
:beannameurlhandlermapping,simpleurlhandlermapping,controllerclassnamehandlermapping,defaultannotationhandlermapping(不个人建议使用)
(3)处理器适配器handleradapter(配置表就行)
功能:明确的某个特定规则(handleradapter要求的规则)去想执行handler。
按照handleradapter对处理器参与先执行,这是适配器模式的应用,是从储存多个适配器对更大类型的处理器接受不能执行。
较常见的处理器适配器
:httprequesthandleradapter,simplecontrollerhandleradapter,annotationmethodhandleradapter
(4)处理器handler即controller(程序猿c语言设计)
功能:c语言设计handler时按照handleradapter的要求再去做,这样的适配器才也可以去错误的想执行handler。
(5)视图推导器viewreslover(配置再试一下)
功能:参与视图解析,参照逻辑视图名解析成唯一的视图。
viewresolver共同负责将处理结果生成沉淀view视图,viewresolver是需要根据逻辑视图名解析成物理视图名即具体看的页面地址,再能生成view视图对象,之后对view进行软件渲染将处理结果页面展示给用户。
springmvc框架能提供了含有view视图类型,如:jstlview、freemarkerview、pdfview...
(6)视图view(程序猿汇编语言)
view是一个接口,利用类接受不同的view类型(jsp、freemarker、pdf...)
题主估计听说下面这些名词:
-会堵塞io
-非会堵塞io
-同步io
-异步运行io
-同步堵塞io
-同步非阻塞io
-异步造成堵塞io
-同步异步非阻塞住io
如果能表述了这些,你就能再理解webflux的非阻塞住了!
io
一个io操作当然有两个步骤:率先发动io请求和实际的io能操作
阻塞住io和非阻塞io的区别在于另一个步骤是否阻塞:发起攻击io帮忙有无会被阻塞,如果不是阻塞直到此时完成那就是现代的堵塞io;如果不是不阻塞,那么就是非造成堵塞io
歌词同步io和同步异步io的区别就在于第二个步骤如何确定阻塞:如果没有实际中的io读写阻塞只是请求进程,那就就是歌词同步io,并且堵塞io、非阻塞住io、io复用、信号驱动io全是歌词同步io;如果没有不阻塞,只不过是操作系统帮你完了以后io操作再将结果直接返回给你,那你就是同步异步io
举个不太更贴切的例子:例如你家网络断了,你打去电信报修!
-你拨号连接---客户端直接连接服务器
-通了---连接上确立
-你知道:“我家网断了,帮我修下”---发送消息
-说完你就在那里等,这样的话那是阻塞io
-要是倒是你有事,你搁下,然后再全面处理其他事情了,过半天你来问下,修好后了没---那就是非堵塞io
-如果客服说:“立刻帮你全面处理,你稍等”---同步io
-要是客服说:“立玄帮你全面处理,再说安排你”,接着挂了---异步io
回到问题springmvc5以前,一个只是请求过去后的流程大概情况是这样的:
服务端能接收到只是请求,从线程池资源一个线程来一次性处理
线程如何处理完成后,直接返回数据
线程被释放回线程池中
可以看见,当一个各位过来后,所有的处理结束后才有可能我得到做出反应。
webflux实现reactor模型,一个主从reactor模型如下图:
主reactor主要用于服务控制器连接上帮忙,接收到帮忙后就分配一个channel,然后把就做出反应客户端
从reactor主要用于去处理io操作各位,可是不处理具体详细逻辑
具体详细逻辑由工作线程去一次性处理。工作线程全面处理能完成后再去通知响应。