00:00
好,那下面呢,咱们来看一下dispatch of初始化的过程。我们怎么去看啊,大家注意,咱们直接来找到我们当前dispatch of,然后它的一个继承和实现的关系。因为它的本质呢,就是一个solve that,那所以说呢,大家注意它呢,是完全遵循我们当前solve的生命周期的。所以说呢,我们要想来看它的初始化的过程,那我们肯定是要从哪看,要从我们当前,然后咱们的继承和实现的,继承和实现的过程中,然后咱们的init方法,然后它是怎么来执行的,是怎么被重写的,在init方法中又去调用了哪些其他的方法,然后咱们是这样去看的啊。然后在最早之前呢,然后我们去这个讲,我们注册dispatch of that的时候,咱们用了一个load on startup这个标签,对不对,对吧,咱们当时呢,我就跟大家说了,我。咱们就走了一遍初始化的过程,对吧,然后我说是想让大家看一下我们初始化的过程里面执行的内容非常的多。
01:08
对不对?然后所以我们才需要把load on startup这个标签给它加上。没问题吧,好,那我们现在咱们就再来看一遍啊,首先呢,Dispatch of that,然后它继承了framework of that。Framework of呢,又继承了httb solve b,然后它呢,又继承了httb solve httb solve继承了generate solve,它来实现了咱们当前的solve接口,对不对?好,那所以说我们就可以把当前这个。类的这个结构给它打开,然后我们来看solve里面咱们初始化的方法叫做in,对吧,大家一定要看好,为什么我们要从这开始看,因为这是继承或实现的关系,所以说大家想他继承了他,他继承了他,他又继承了他,他又继承了他。那所以说我们通过继承关系,这里面的方法是不是会继承给他,它里面的方法会继承给他,最终呢,继承到咱们的dispat of that中,所以说呢,像这里面的这个,那因为我们当前dispatch solve that,它就是一个solve that,所以说它遵循我们当前solve的生命周期。
02:20
那它初始化的方法不就是盈利它吗?那所以咱们是不是就要看一下它的这些负类,把初始化的方法继承给他的过程中,都是怎么来执行的,是不是就可以了呀。对吧,这个大家看好啊好,然后下面大家看,大家来看这个接口里面的初始化方法是一个抽象方法,那咱们就要来找到它的实现类,叫做generate of,它有没有初始化呢?它重写的初始化的方法,哪一个是重写的,哪一个是重载的啊,这是重写的,这是重载的。有向上的这个箭头的就是重写的。知道吧,然后他在这儿来将我们当前的成员变量,然后为我们的。
03:03
啊,将我们的局部变量为成员变量进行了赋值,这个东西就是solve conf对象知道吧,然后在这呢,又调用了一个没有参数的引,那所以说我们在当前初始化的过程中,我们能看到的是不是应该就是在我们生命周期的引利方法中去调用了一个无参的引利,这是第一步对吧?好,那我们来看这个午餐的盈利,大家看里面啥都没写。对不对,那所以说这是留给谁用的,这是不是就留给我们当前咱们的子类去使用的,对不对?你看我们在学习了这么多的这个知识之后啊,然后大家是不是应该也都能够看到类似的一些配置,就比如说然后我们当前咱们再去重写一个接口中的抽象方法的时候,然后我们尽量呢,然后咱们来保证什么呀,我们来保证它的这个抽象方法呢,咱们简单的进行一下重写,然后至于其他的一些比较复杂的过程,我们都会去调用一个新的方法,对不对,比如说这个in,大家看这里面是不是什么都没做,那其实就是来教给它的子类来进行重写的。
04:10
那交给他的子类重写之后,因为他会把init,然后继承给他,也会把咱们当前的这个init也继承给他,那所以说这里面的init方法是不是就是按照我们当前咱们的这个init执行的,然后在这个init中,它又调用了这个init。对不对,这个大家一定要看好啊,所以说为什么咱们就要这样去看,那是因为随着继承的过程中,然后咱们当前的这些方法都会继承给dispats of that。所以说咱们只要顺着我们当前的阴历的方法往下去看看它是怎么去执行的就行,知道吧,好。那我们再来看httb solve,大家看啊,你看这里面有初始化的方法吗?没有,所以说in httb solve,它有没有去这个重写这个初始化的方法啊,没有去重写啊。
05:03
好,那下面呢,我们再来看HT DB solve b,大家看看它重写了没有啊,重写了。然后它在这个地方呢,咱们有看到了有一个向上的箭头,那这个就是来重写了generate solve里面的in,大家看你看他重写的是啥,是不是午餐的这个呀,对不对,也就是我们在这里面去调用的这个空的这个无餐的午餐的这个方法啊。好,那下面呢,我们再来看。咱们把它给打开之后,那这里面它都做了点什么,大家注意,然后大家看啊,咱们就找一些比较重要的跟大家说一下。好,咱们往下来执行,然后在这儿大家注意,最后呢,它是不是来调用了一个叫做in solve b的方法。所以说我们主要来看的是它,而且呢,大家也可以看一下,你看它给我们在这给我们的一个注释叫做let sub classes,让它的子类,然后呢,Do whatever,对吧,Initialization they like,就是说它的子类想怎么使,想怎么进行初始化就怎么初始化,对不对?好,然后那我们现在咱们再来看这个叫in service b,但是你结果你发现这里面什么都没写,那这不就符合我们刚才。
06:18
咱们所看到的这个提示嘛,对不对,然后由谁来实现,由它的子类去实现,知道吧,好,那行,那所以说我们现在在我们初始化的方法中最终去调用了它,而在当前这个类中呢,它并没有对这个方法呢,在它的方法题里面去写其他的内容,那所以大家想想这个方法是不是也是由它的子类来重写的,对不对?好,那我们现在需要找的方法叫做in it solve病。然后大家来看就是这个方法啊,然后现在咱们已经看到这儿了啊,叫frame of that framework of that对不对,大家看这个方法中他又干了点什么,为什么要看这个方法知道吧,因为这个是在我们当前初始化的过程中来调用的这个方法啊。
07:03
好看,这个叫做init web application contest,大家注意,这个东西非常的重要。干啥的来初始化我们当前咱们的web application contest的,那这是啥?这不就是我们之前咱们讲过的,在web应用中咱们所使用的IOC容器吗?所以说在这他就来初始化了,我们当前spring VC的一个IOC容器,那所以我们之前跟大家说的,我说。我们spring VC的配置文件是在我们的dispatch of进行初始化的时候完成的,也就是在服务器启动的时候完成的,对不对?大家看一下没问题。对吧,你看在这它的init web application con就是干嘛的,它就是用来初始化IOC容器的,知道吧,好。然后下面呢,我们再来看这个,然后这个呢,叫做in framework of,这个东西咱们一会再看啊,然后我们先来看它,下面大家看一下就没有什么了,下面都是跟咱们的日志有关的,对吧?好,然后咱们先来看它叫in framework of,我现在我来一个点击大家看这里面啥都没有。
08:14
那是不是又是让它的子类来重写的结果呢?我记得这个东西咱们之前看过来,点击CTRL加F,你一个CTRLB,你发现这里面啥都没有,那说明啥?说明咱们当前的这个初始化的方法,它并没有个在dispatal solve里面来进行重写,对不对?对吧,所以说大家想想我们现在咱们还需要去看哪个过程吗。咱们现在还需要去看我们当前咱们的这个过程吗?不需要,我们只需要来看它是如何来初始化咱们的IOC容器的就可以,对不对?好,下面咱们把这个方法给点开。然后这里面呢,大家来看一下啊。好。然后它在这个地方来判断了我们的IOC容器是否为难,如果不等于难,然后在下面来执行这一嘎达的代码,如果恒等于难,大家注意,一般情况下,我们在这个位置,咱们当前的IOC容器它都是难。
09:11
知道吧,都是难,所以说呢,我们在这,咱们是不是如果判断它如果恒等于耐怎么办,然后我们去找到我们当前的IOC容器,如果说你找你也没有找到,然后它还是一个难怎么办,这个时候咱们就会去创建咱们的we部application contest。能看懂吧,好,然后大家来看一下,你看咱们把它给打开,然后打开之后呢,现在它在这个方法里面又去调用了,我们当前的一个方法叫做create web application contest对不对,对吧,大家看一下啊,你看这里面是怎么去写的。就比如说我们当前咱们的这一句话对吧,这句话其实就是来为我们就就是真正来创建咱们的IOC容器的,叫做being us,第2INSTANT,然后class,大家看啊,这句话就是专门来创建咱们的IOC容器的,然后最后呢,大家看是不是把咱们的IOC容器给进行了返回。
10:09
然后这里面呢,有一句话大家要注意。是什么呢?就是当我们去创建了咱们的IOC容器之后,然后我们是不是在这个地方来给它设置了一个set parent来给它设置了一个负容器。然后这句话是干嘛的呢?大家注意,你比如说我们之后咱们要讲SSM整合,然后我们当前咱们的spring VC要创建IC容器,咱们的spring呢,它也要创建IOC容器。好,然后那我们当前咱们的这两个IOC容器是什么关系,大家注意在这儿咱们就能够看出来,虽然说呢,这个看出来的信息不多啊,但是我可以跟大家说一下。咱们通过spring mvc所创建出来的IOC容器跟咱们spring的IOC容器,它们两个是一个一个负容器,一个子容器的关系。
11:05
谁是负容器,谁是子容器呢?你看这儿吗?那它在这儿它不是设置了一个负容器,那说明spring m VC创建出来的容器就是子容器吗?Spring创建出来的容器就是负容器知道不?哎,大家注意啊,这句话大家要看好,是来设置咱们当前spring VC它的IC容器的负容器,其实也就是咱们spring的IOC容器,知道不行啊。好,那我们现在呢,咱们这个就看到这,然后下面呢,大家再来看,咱们再回到哪,再回到in solve b里边,然后咱们再来看in web application contest。好。那我们在这个地方,咱们是真正去创建了一个IOC容器,然后那我们在这个地方,大家注意它是来刷新了我们当前的这个容器。OK吧,好,然后刷新完之后呢,咱们一会儿再看这个方法,然后大家再来看,你看它下面它又干了什么,它在获取了我们的IOC容器之后,然后是不是把我们当前的IOC容器给共享到,共享到了咱们最大的一个这个预对象中,叫做solvele contest预对象能看懂吧?点set attribute这代码大家肯定认识吧,对不对?所以说在这是把spring m VC的IC容器共享到了我们当前最大的预对象中,知道吧,这是属性名,然后这个是我们当前咱们的一个IOC容器对象。
12:33
能听懂吧,好啊行,然后下面呢,我们在这在这咱们再来看这个刷新的方法。这个刷新的方法叫做onfresh,然后咱们把它给点开之后,你看这里面啥都没写。然后他给我们了一个注释,叫for sub class,什么意思?让他的子类来重写。所以说我们直接来找到它的词类,就是dispats of that,然后我们当前咱们来找到这个onfresh,大家看一下,这大家还认识吧。
13:05
我们之前咱们看过这个内容叫做in strategies,叫做初始化策略。然后我们现在把这个方法给点进去之后,大家看一下这些东西,咱们有好多都是认识的,对不对,比如说。In multi part干啥的?初始化我们的文件上传解析器的。然后in local reserve,然后这个咱们可能不认识,叫初始化本地解析器。然后咱们来找认识的啊,Handle the mappings来初始化我们的异常,异常,Handle the mappings啊,这这不是异常啊,Handler mappings,这是我们之前咱们在笔记里面所看到的,这个叫处理器适配处理器映射器。能看懂吧,干啥的,然后通过我们当前咱们浏览器所发送的信息,然后去匹配咱们的控制器方法的对不对,来处理咱们当前的一个请求映射的。
14:02
好,这个叫做init handler adapts干什么的?来初始化我们当前的处理器适配器的,它有什么作用,大家记不记得调用控制器方法对不对?这是干什么的?来初始化我们当前咱们的异常解析器的。没问题吧,好,然后这个是来初始化我们当前的视图解析器的,OK,咱们看到这儿就行。大家注意,这就是我们当前spring n VC它的一个初始化的过程。啊,Dis初始化的一个过程。然后在这里面我们能看到我们去初始化spring mvc的IC容器是在这里面来完成的。对吧,代码是在这里面完成的,但是代码的执行肯定是在这里面来完成的啊。因为咱们通过继承是会把方法继承给他的,知道吧,行啊好,咱们主要就是简单的看一遍这个过程就可以行,那这是我们spring VC的一个初始化的过程,咱们的笔记里面呢,给大家写的也有。
15:04
比如说solve里面的初始化,然后呢,它去调用了我们当前咱们的generate solve里面的这个in,然后这个in呢,又去调用了咱们的in solve bin in solve b里面又去调用了咱们的in web application contest,对不对,对吧?好,这是我给大家复制出来的这一个源码。初始化web application context的,然后大家来看一下啊,然后这里面我们需要来注意的就是这创建IOC容器,然后这个是来刷新,然后这个是将咱们的IOC容器在咱们的应用域里面来进行共享,这个之前咱们都说到这儿了啊。好,再往下是创建web application contest,然后这个是通过反射来创建IOC容器对象,然后这个是来设置它的负容器,谁是它的负容器,我也跟大家说过,是咱们spring的IOC容器,是spring VC的IOC容器的负容器,知道吧,好。
16:04
然后再往下呢,就是我们最终看到的一个dispatch。Solve的初始化策略是在我们当前的onflesh方法里面,然后来调用了一个初始化策略的方法,然后在初始化策略的方法里面,然后是不是将我们当前咱们见过的一些组件,或者说没有见过的一些组件,是不是来进行了初始化,对不对?好啊,行,那这就是spring VC初始化的过程。
我来说两句