00:01
各位,刚才呢,我们讲到了响应式编程,咱们通过Java的实验方式,还有reactor分别做了讲解,那下面咱们来具体说一下关于spring web flag,它的执行流程,以及操作中我们用到哪些核心的API,下面给各位做一个详细讲解。咱们刚才提到了,给各位做个描述,Spring web flagx,它给予的是这个reri进行实践。然后它这里边默认的容器是什么呢?是这个叫at,它默认用的内容器,而这个nativet。它是个什么呢?是一个高性能的另外一个特点,叫做基于异步事件驱动的NIO框架。什么叫NIO,就是咱们之前提到的叫异步非阻塞,就是它的方式就是一个异步。
01:05
非阻塞的一个框架,所以说此任welo基于reactor默认用的容器就是这个叫net,而nat是一个高性能的NIO框架,它就是一个异步非阻塞的一个框架,这个是咱们做一个说明,然后下面关于这个NIO或者这个异物被阻塞给各位我来做说明,主要咱讲这个net它的一个特点。给大家做个描述,关于这个A。然后内T里提到nat呢,是一个异部非阻塞一框架,然后他用的是叫做NIO的方式,就是非阻塞,然后这里边提到非阻塞肯定有阻塞,那这过程刚才各位解释过了,下面咱通过nat把这过程给各位再做分析,首先来说一下,这个叫阻塞方式,阻塞它叫。
02:02
Bio就是blocking IO,那什么叫阻塞方式,大家看一下,我这边一张图叫bio,这张图咱们打开咱们浏览遍啊,我们这么打开。然后大家看啊,在这张图上呢,你看我们现在这种方式叫bio,就是组的方式,你看我每次发送请求要通过socket进行连接,然后创建一个线程进行是不是进行操作,而这个过程什么特点呢?大家注意,比如现在我这里边有很多的请求的相关操作,在这个操作过程中,大家发现,比如说我现在发送了一个请求,那它到这里边建立soet进行实现,这过程中只有实验之后,就只有一直往下执行才能做其他事情,然后同样这里边建立三会请求完成这个操作,这里边建立请求完成操作。所以说这么做的话,有一个很严重问题,如果说我现在有很多的请求同时进行发送,那我这过程中并不能处理更多请求,更多请求有需要进行阻塞或者说等待的状态,这种方式叫bio,就是阻塞的状态,这各位给他知道。
03:14
然后这张图给各位解一下,而我们现在用这个内体叫什么,它叫非阻塞方式,那非阻塞怎么做到的,给各位来写一下。非阻塞的描述,它叫做NIO,就是no blocking IO,这叫非阻塞。那非阻塞什么意思呢?咱们也是来看一下,我里边有张图,就这张图,把这图打开。给各位做个描述,然后大家看一下啊,在这张图上呢,描述就是非阻侧的特点,然后它什么特点,首先第一部分在这里边有很多叫channel channel什么意思,理解为它就是一个通道,你看啊,就是现在我每个操作都是一个channel,里边会有很多操作,每个操作这样一个channel,然后这个channel需要通过一个叫。
04:06
什么意思是注册,再有这个叫select里边进行注册,这什么意思,理解为它叫选择器。选择器,或者说呢,它也可以翻译成叫多路复用器,就这过程中用到,其实就是一种多路复用的这么一个效果。这个位知道,然后它过程怎么样,比如现在我有很多操作,那每个操作这样一个channel通道,把这些通道在我的里边进行注册,而我set里边怎么做,他就关注一下他想要关注的事情,比如里边几个状态,包括有连接状态,有这个accept接收状态,有读的状态,有写的状态,比如现在我某通道中有这个连接状态now select,关注这个状态,它就把这状态里面的操作完成这个任务的执行。比如现在有read操作,那我关注read操作,把readid进行执行,它通过这种多channel的方式在S里边就注册完成一种叫多路复用方式,所以native用的就是这种方式,有咱说的异步非阻册的特点,所以各位把这个的知道就关于这个异不非阻塞ne体就这个框架,然后它里边是怎么做到的,这是咱们对它的原理做一个说明。
05:25
然后针对这个net里边更详细的说明,各位可以关注上归股,股里穴外有针对内1T更详细讲解,咱现在对他这个过程给各位做个介绍,你知道什么叫阻塞,什么叫非阻塞,BIIO阻的方式,NIO是非阻塞,而na就是一种非阻的特点,而我们现在spring web f flagx,它默认用的容器就是na,是一个高性能的异步非阻塞的框架,这个啊,我们做了一个说明,所以各位把这过程给到知道。然后这个说完之后,咱继续往下看,咱再回到我们的这个spring we flags那的web flags到底是怎么执行的,或者他到底是怎么工作的,下面各位自我说明,那我来说一下啊,我这里强调。
06:15
就是spring web flagx,它的执行的过程和我那个spring mvc它是很相似的,基本上是相似的,只里边用的组件不一样,过程基本上一样,如果各位熟悉什么VC,那再去看这spring we flags里边过程基本上是类似的,那我下面给各位说一下它的过程中是怎么做到的。那咱们强调啊,首先第一部分各位该知道,在我们的死亡VC中啊,有一个核心的一个控制T,它叫做dispat,各位应该知道,而我们现在在spring web Fla里边也有一个核心的一个控制器。
07:04
这控制器就不叫dispat select,它叫什么?叫dispat handler,给各位写一下,它叫dispatch handler。他用的是这个核心控制器,而这个核心控制器它在我们的什么里边实现了一个接口,这接口叫web handle了。它是通过这个过程实现出这个核心的这么一个操作,是一个核心控制器,那咱下面把这个web handler里边是怎么做到的,给各位做个说明,也就是我们现在这里边万有flag里边一个最基本的流程跟损VC基本上是一样的,那咱们来看一下哈,怎么看呢?咱通过看一下它的源码来看一下。首先第一个呢,咱为了看源码,我先把这依赖改一下,依赖改成什么,改成这个叫web。
08:00
Flex啊,改成它,然后改完之后,我在里边咱们写上一个接口,然后咱们看它是怎么执行的。那我们看到啊,这个接口咱说到了,它叫做web handle这个接口,然后这接口咱们打开看,里边大家清楚看到,在这接口中是一个方法,什么方法,是不是叫handle handle这个方法中就实验了一个流程,那这个给各位截个图。我小的位置啊。就咱们说的里边这个过程,就是现在我们这个接口叫web handler,然后它里边有一个方法,这方法就叫handle,然后它的过程就是在handle中进行实现,那咱看这handle里边怎么做到的,我把这方法转给他。点开。然后大家看啊,它是在我们这个叫你看这个叫底PA handle里边这个方法把它点开,这就是它那个层的一个过程,然后过程怎么做到的,咱我们来看一下啊,其实一个代码应该说很简单,首先第一个在方法的一个参数叫select web change,这里边放的其实就是一个HTP那个请求响的信息,放一些相关的参数。
09:19
然后在过程中,咱往下看里边的这步操作。这里边其实它的位置是不是做了一个判断,用了一个三元运算符做了一个判断,判断什么,就是现在,如果你这个叫handle mapping,就是你这个接口映射为空,那怎么做,他给我们就是直接啊,如果它等于空,直接就串一个叫not found,就是创建一个not found这么一个错误,如果说它不为空,那它往下进行就到这一步,叫mapping get handle。然后这步做什么呢?就根据具体请求获取对应那个handle mapping,就是你的映射的匹配,然后这个做到之后往下执行到这一步进行这个叫以work判断方法,这步什么意思呢?说的简单点,就只行我们具的业务,也就是我们定义那个接口方法,也就说第一步判断迈是不是等于空,如果等于空,直接反应一个not放的这么一个错误,如果不等于空,先找到你那个距那个映射那部分,就那个handle或者那个处理器,找到之后执行一下我们这里别具体的方法,然后进行之后最后一步。
10:27
打开这个代码。这是什么?是不是这个handle result,把我们的处理结果是不是最终进行返回,所以它里边主要是这么一个基本过程,咱通过这个源码就看到了我们这个spring web里边一个最基本的一个流程,这个啊,我们做一个说明,然后把这部分给各位截一下,我在里边把我刚才说的几个重点给各位特别标注一下。首先里边的第一部分这位置就这个叫server web,一个change,它里边就是会放我们一些HTP请求响应的一些信息,包含我们的一些参数等等,这是第一部分,然后第二部分这里边做了一个判断,就是现在如果你的这个麦屏等于空,它就把一个让它犯错误,如果不等于空,它就做了这个事情,这事情是什么呢?在里边它就是。
11:22
根据你具体请用地址获取,对应那个hi mapping就根据请求地址获取。它对应的那个就是handle mapping,回你的mapping写一下啊这么一句话,然后这个做完之后,下面到这步,就那个一用方法这一步什么意思,根据你的地址,因为你的mapping就得到了,然后它就是调用我们具体那个业务的这么一个方法,就是你的方法他找到了进行执行,然后调用之后,最后一步把你处理的那个。结果进行返回,所以这个啊,就是咱说的spring web flag里边一个最基本的一个流程,咱通过它这个源码就是这个叫外方handle了,里边这个handle方法看到了它的一个基本流程,这个流程要各位给他知道,跟我们死亡VC基本上是一样的,这个啊我们作为说明,然后这个说完之后,咱们继续往下来看,就下面一句话。
12:26
火线里边的第三部分。第三部分写什么呢?咱们才看到了,在我们这个任web flagx这个里边,它有一个就是核心的控制器,就是咱说那个叫dispat handle了,我再写一遍啊,Dispat。看到了。然后这个东西它主要是负责什么,就是你的。请求的处理就是它一个总体的处理啊,请求的那个处理,它实际是请求的映射,而在其实这个调用过程中呢,除了我们这个dispa handle之外,还有一些其他的循管组件进行调用,那还有几个跟SVC类似,它还有一个叫handle mapping。
13:18
还有这个组件,然后除了它之外,里边还有一个叫这个handle,这个呃,De这么一个组件。这么一个组件,然后除了它之外还有一个叫handle result handle了么一个组件,然后写一下啊,Handle result。看到了。它里边主要有这么几个组件,而这个组件什么意思应该很好理解,第一个叫handle mapping,它主要是根据客户端请求,能够查询处理请求那个方法就是现在比如请问某个方法通过这个handle mapping能够匹配到你要找哪个方法,这是一个。第二个叫handle德或者拍,这做什么呢?其实是一种视微期的效果,就是真正去负责请求处理,就是实验你那个具体的业务方法。
14:12
然后第三个叫做handle result handle这最好理解,它主要是负责响应结果进行处理啊,主要是里边的这么几个内容,给各位描述一下啊。第一个就是。请求查询到你处理的那个方法,就请求那个方法,用它找到第二个叫de,就适配器,它是真正你负责请求内购。出力就是咱们实验那个具体业务方法,第三个就是你那个响应结果的。这么一个处理,对它的过程中主要用到了这么几个handle的处理器,通过它把这过程最终实现,这个啊是咱说的spring web flagx,一个最基本的这个过程,各位把里边这个过程给他知道,通过源码咱也做了一个基本分析,包括里边有这么几个内容。
15:07
这个啊,我们就做这个说明,然后除了这个之外,咱下面再继续说一下,在这个外flag中,咱要实验这个操作,里边还有一些相关的API部分,给各位进一步做说明,咱看第四部分。就是现在呢,如果说啊,我们要用这个spring web flagx,要想实现一个就是函数式的这么一种编程,或者说响应式的编程,那这过程中呢,在里边有两个针对函数式编程的重要的两个接口,那两接口我先给大家列出来,比如咱们讲到代码中会具体实现这个操作,首先第一个接口它叫ual function。这是第一个接口,然后第二个接口,它叫做handler function。
16:00
这是两个重要接口,然后两个接口什么意思呢?Root function好理解,它就实现路由功能,将你的请求转发给对应的handle,而handle方式什么意思?代表处理请求,然后并且响应那个函数,就只有你具体那个方法。所以这是里面两个重要的接口,咱一会儿在写代码中会去用到,各位把这个先给它知道啊。这是里边两个重要的API,就是做这个还是编程中会用到,一个叫u function做流处理,一个叫handle function,就处理与那个具体的函数。我写一下啊,这是路由的出力。然后这个叫handle function,就是处理我们那个具体的函数或者具体的方法。这个啊,我们做一个说明,然后除了这个之外呢,在这个润。Web发里边,它里边还有一个接口,就刚才提到那个叫web handle的,Web handle的是里边一个比较核心接口,里边定了一些相关的处理,那这接口咱可以再看一下,因为刚才已经看过了,那我们再看一下啊,大家看这接口中呢,有对应的很多的实现类,而每个实验类都有对应的不同功能,咱刚才说了,它这是外辅导中一个核心的这么一个控制器啊,教记的拍判断了,另外里边还有其他东西,比如说咱们看这个东西叫resource we判断中它是干什么的,用于处理一些静态资源,比如说强文件,什么S文件等等,包括里边还有一个叫web handle的这个东西,它主要干什么呢?就是这个东西啊,理喻为是一种装饰器,它主要用一种叫装饰的模式来做一些相关的扩展功能。
17:47
啊,包括里边还有一个叫router,做的是路由一些相关的处理,所以这个啊是关于一个重要的接口叫web handler,咱给他做了一个说明。所以这个就是关于此润web flagx一个基本流程,还有它里边的这么一个就是相关的API,最终我在总结遍啊,在它流程中呢,有一个核心的控制器,这个东西叫dispa handle了,而它里边实现了一个接口叫web handler载体拍这里边它里边用这个叫handle方法做的流程,就是咱刚才说的流程,但是过程中还用到其他处理器,包括handler mapping handler adapt和这个handler result handler。另外spring we flag中你要做函数编程需要用到另外两个接口,一个叫router function,一个叫handle function router function做路由处理,Handle function做你的具体的函数的处理,或者说你的具体方法处理。
18:49
这是关于API的一个基本介绍,包括这两个接口,咱一会儿写到这个,基于函数式编程,做这个操作中会去用到,各位先知道。里边这么一个基本的过程,所以这个啊,我们做了一个说明。
我来说两句