00:00
好,那接下来回到我们前边的这个问题,为什么我们自己写的my sol,它映射的这个MY路径发送请求的时候呢,它直接响应,不会经过s spring的拦截器,那回到我们这个源码,我们可以来这么来分析,首先我们整个系统里边呢,默认现在应该会有两个soulate,为什么是两个sol,首先第一个是我们的my soulate,那my sol呢,它要处理的路径是叫杠MY这个路径,而第二个so我们都知道spring m VC要处理所有请求,那会有一个最大的这个派发器叫dispature so呢,要处理的路径是杠物径,那顺便呢,我们还可以看一下dispaure这个它是怎么注册进来生效的,我们可以来CTRLN,我们专门来找一个叫dispature so,它专门呢有一个叫dispa so auto configuration相相当于我们这一块dispa so的。
01:00
自动配置类,它也是在我们的这个自动配置包下,我们来看一下啊,我们的这个自动配置包,这自动配置包我们现在是web开发,那web模块里边的好多自动配置我们应该已经都分析过很多了,来到我们的这个web模块,那我们solid select章节的啊,那我们现在呢,有dispat solid select自动配置,那就在这包括呢,我们这个编码的htp includingding的自动配置,在这来看一下我们dispa它这个配置呢,我们来看这呢有一个配置类啊,准备好了这个配置类它呢,首先第一个ant being给容器中放了一个disenure solidate,好,我们先可以来看一下disppaure so扩展是怎么配置进来的,Dispature server light如何注册进来,它的步骤呢,非常简单,首先第一步它呢给容器中放了一个组件叫dispature so,而这个sol的名字呢,就叫我们来看一下啊,它呢这一块。
02:00
就叫我们这个小写的dispature so,所以呢,这是我们做的第一件事,Spring呢,会给容器中放一个dispature so,而dispaure sol里边的好多属性都是绑定在web mvc里边的,比如我们dispaure sol里边啊,我们这个出现错误是不是要抛出异常,如果呃没有处理器能处理这个错误的话,那要不要抛出异常等等,那这一块呢,全部绑定在spring mvc这一块,所以我们来可以看一下第一个我们容器中,容器中自动配置了被SP select这个组件,并且绑定了所有的属性呢,绑定了我们的这块啊配置了它,然后呢,属性绑定,属性绑定到绑定到绑定到我们的这个叫web mvc properties里边,然后呢,其实那就对应的,如果我们要改disppa相关的这个行为,那我们应该。
03:00
改的就是它的这一块前缀spring mvc前缀里边配的相关的东西,那这一块呢,比如有local的包,包括我们的这个format,数据格式化的,我们可以把它拿过来,然后呢,对应的配置,对应的配置文件是配置文件的部分呢,是我们的这一块,那接下来对应的配置文件配置项吧,配置项是这一块,所以呢,这是我们第一步,它给容器中配了disconl来下第二步怎么办?大家注意,它呢给容器中还放了我们这个文件上传解析器,我们先不用改,继续往下,这呢还有一个配置类,这个配置类呢,我们来往下看,这有一个叫dispaure registry b,我们这个registergistry b呢,点进来发现呢,它就是一个registry b,所以呢,Disc就是通过我们之前说的这个机制,它来注册的进来的,然后呢,通过他把。
04:01
Dispat这个原生的组件注册进来,把咱们这个dispat。配置进来,这样呢,相当于我们这个整个外围应用里边就有一个是disp了,而displ呢,它所映射的路径是什么?我们可以来看一下啊,Disp so我们以前有一个呢,先传入so,诶那传入的就是我们之前容器中的这个solveet,我们说方法上只要参数位置由我们这个参数,这个参数呢就会从容器中拿好没问题,好原来呢给容器中放的dispar s拿来,然后呢是通过web mvc proper so里边get pass这个路径配的来点过来,所以我们来看这个pass,它叫杠,如果我们想要改变disonture拦截路径,现在我们可以来修改这一块,我们看一下啊,它是绑定到web m VC so这个里边的,所以我们就应该修改的,就是比如我们MVc.serverl里边有一个pass,我们如果改一个杠MVC,那以后呢,相当于我。
05:10
呃,Thispar so let所有处理的请求是以杠MVC下边为开始的,所以呢,这是我们可以修改它的这个路径,我们我们呢就不用修改了,把它拿过来,它是通过我们这个机制配置配置进来,然后呢,还有一个规则,就是默认映射的是杠路径,默认映射的是杠路径,那所以呢,现在我们就拿到了我们的这个杠路径,那我们现在dispar,所以相当于当前项目下的所有请求,我们来到这儿来处理,然后呢,现在我们又应该知道一个机制,什么机制呢?在我们这个以前我们来做tomcat,我们来使用tomcat做原生的solet开发的时候,我们都知道,如果sole,那so呢,如果多个sole都能处理同一个路径,呃,不是说多个soet,如果多个sol,多个soet都能都能都。
06:10
能处理到同一层路径,都能处理到同一层路径,然后呢,那应该是精确优先原则,所以这个是什么意思呢?比如我们有一个al,它能处理的路径呢,叫杠卖下边的呃一呃,下边的我们就不写什么了,那就是杠麦下边的所有,然后呢,而B有一个S。然后呢,它能处理的是杠慢下边的一,那所以呢,如果我们发送杠慢一,那就会来到B处理,因为B最优先,那如果我们发送杠慢二,然后呢,那就应该会来到我们这个A来进行处理,所以呢,其实按照这个效果的话,那我们就应该是呢,我们现在整个系统里边有两个sol,我们可以来看一下,而第一个sol呢是disppat sol,它处理的是杠路径,而第二个so呢是MY,它处理的是杠卖路径,所以当我们发送杠卖路径的时候,它呢,按照精确优先原则,它会来到这不用来到我们disureol,而如果我们没有这个MYSO,我们发送杠慢,那它就会来到dispaure so,所以一旦来到dispa s,那整个就是执行的是spring的那堆流程,我们就能看到dispaure serverl它的do dispatch方法,那前边呢,比如这有。
07:38
Apply post handle这拦截器的后置方法,前置方法,还有我们的这个啊,After comp方法,所以呢,只有我们经过了整个spring的流程,我们才会触发拦截器的流程,而我们这个慢是直接交由Tom k经过两个so的优先匹配它来匹配,所以Tom k直接处理调用我们so写出相应内容就行了。那顺便呢,通过我们这个这个问题,那我们正好分析了一下disp它如何注册进来,也是非常方便,就是用我们以前的下边这种方式,使用so register把dispa它映射杠路径注册进来,这是我们说的。
08:19
如何在我boot开发的过程中,我们给我们系统里边注入web原生组件。
我来说两句