00:00
好,前面呢,我们说了一下container initial机制,以及呢我们利用API,我们这个容器中添加了以及filter这三大组件,那么接下来呢,我们就利用这个机制来整合spring mvc。好,我来创建一个新的工程,创建一个新的工程,好,这个呢叫com点硅谷spring mvc,我们来说spring mvc的主解版。好,我来选中一个挂包,两个finish。好,我们先让他创建工程,这个工程呢,刚一创建出来,这会有一个报的这个小错误,说这个fair on missing web插,就说我们这个插件再来做这个工程编的时候呢,发现我们这个在web下没有web插,它就会报错,来在这做一个设置,这有一个叫insert plug,来插入一个plug,这个plug呢,来找到这个plug。
01:05
这个编译的这个插件,这个插件里边呢,我们来加一项配置web插,意思呢,没有没有这个web插的时候啊,不要产生这个错误啊,我们把这个项目呢更新一下,我们现在呢用注解版,我们不要这个web插来尝试一下,好我来第一步先来导入咱们相关的这个依赖,好我来导入一个依赖,这依赖呢,我来再选中web mvc,好,我这有一个外版MVC4311版本,好可以正好呢把spring mvc的这个。外版MVC包以及它依赖的其他包,我们都一并导入进来,接下来呢,我们再来导入一个API的依赖。好solid API,这个solid API呢,我们就来导3.0及以上的这个版本啊,我们现在是用3.0以上特特性,好这有一个scope,由于我们这个Tom里边也有这个API,我们所以说呢,我们给这调成一个叫目标环境已经有这个扎包了,我打这个打扎包的时,我们这个项目打挖包的时候就不要带上这个扎包了,否则就会引起冲突,好把这个依赖等文依赖整完以后呢,接下来我们怎么配置呢?其实就是利用我们这个叫solid container initial机制。
02:33
怎么做呢?我们来给大家这样来写一个。笔记。这个怎么做,我们可以第一种办法,我们直接可以参与spring的官方文档,哎,这是spring的spring framework,我们就来这点进来呢,这我们来参照502的这个文档,这个文档呢,分类比较详细,来到我们这个web,也就是我们讲解mvc web socket等等点进来这呢有一个介绍,在这个介绍里边呢,我们配置,我们来可以实现它,哎或者呢,我们自己来实现select container initial接口,然后呢,我们自己来创建一个这个什么web application,我们这个web的IOC容器,那指定配置类的位置启动容器,容器启动的时候呢,我们再来自己来创建,把创建好呢,利用我们之前的这个API,诶我们把添加进去,并来添加映射,这是这种方式,当然我们不用这种方式,这种方式呢,就类似于下边的这个配置。
03:39
这个配置呢,其实就是我们以前整合spring mvc的配置,我们整合spring mvc配置的第一步啊,我们先用一个监听器启动spring的这个配置,加载spring的配置来启动spring的容器,这个容器呢,我们把它叫负容器,也叫更容器,我们再来配置,在这指定spring VC配置文件的位置来启动springvc,以及配合映射,这是我们的子容器,Springvc的容器啊,我们以前也是配的这种负子容器,现在呢,我们就不这么做了,我们用注解呢,我们来看这有一个原理,我们来打开dependency。
04:20
我们导到这个web这个包里边。看好啊,有一个文件叫Meta info service,哎,Java,诶这个contain我们以前其实说过是吧,说我们这个web啊,容器在启动的时候。会扫描,会扫描每个包,每个炸。包下大咱们这个info service。下面呢,这个文件会扫描这个文件,扫描这个文件呢,我们就会加载这个文件的启动类,加载这个文件指定的,我们就来看这个文件里边指定了一个什么类呢?它指定了一个它叫contain,就来找到它。
05:15
好,找到它这个类呢,我们来看,在这个类里边,我们来看它实现的on start up,我们这个容器一启动,会传一个我们感兴趣的类型集合,然后呢,他也没做什么,他把这些感兴趣的类型集合都在这,他拿到挨个遍历,如果说这个类型不是接口,不是抽象的,并且是web application initial的这个实现旗下的,然后呢,它就会诶在这创建new一个instance,为这个创建实例,并把它添加到引内拉里边,所以说呢,我们再来记录一下,而spring呢,Spring的应用。
06:03
一启动就会加载加载加载什么呢?因为他感兴趣的是这个叫web application in initial啊会加载感兴趣的这个。感兴趣啊,咱们这个接口下的所有咱们这个组件,我们来可以看一下,哎,它呢,就是我们这个接口,那么呢,它会加载这些组件,并且呢,我们刚才也看到了。第四步,并且。为咱们这些组件,这些组件只要。创建对象,创建对象,当然创建对象的前提是啊,这些组件,组件呢不是接口,不是抽象类。它呢就会为这些web application initialize组件来创建对象,那么呢,我们就来看一下这个web application initial点开你看啊,它里边呢,就有三个抽象类,这个抽象类呢,我们挨个分析,哎,我们点过来像这个类。
07:15
这个类的作用,第一层抽象类,它的作用呢,我们可以来进去大概看一下,它在ons start up再来启动的时候呢,诶它来注册这个container listener,这个container listener呢,它会来创建root application,所以呢在这个里边。他会来创建一个叫耕容器,创建更容器。有一个方法叫application,好,然后这个创建完了以后呢,哎,然后他把这个ER啊,我们这个自己整的这个listener,我们来加在这个中,利用这个listener创建我们这个更容器,其实这个东西跟我以前的啊配置这是基本类似的,好那么呢,我们这个我们就来分析完了,我们再再来看它下边的这个子类,这个子类呢叫CT disure引内子,按照这个名字呢,我们其实就知道了,它是一个我们这个叫disure的初始化器,相当于我们这个spring m VC的前端控制器的初始化器,还有一个它它的作用是什么呢?我们进来也可以看一下,诶,它在启动的时候,它也会叫注册dispa select啊注册呢很简单,我们来往前看,它这呢,先调用了第一个方法叫create。
08:43
Application contest相当于呢,它会给我们创建一个web的IOC容器,好,这是它的第一处,它在这创建一个外边容器,创建一个。外边的LC容器,哎,它调这么一个方法,然后呢,我们再来看,它在这呢,还会创建一个dispature,诶我们点过来,你看他就帮我们来扭了一个dispature。
09:15
哎,他在这创建了一个,创建了一个咱们这个叫。创建了它,它呢就是调用这个方法来创建的,相当于帮我们来用了一个disppaure,那它创建完以后呢,呃,前面呢,我们再来看啊,Dispa创建完了以后,那接下来诶,它就把这个创建的这个,然后呢,利用context API添加so的方式来添加在我们这个外保容器中,然后呢,并且产生一个dynamic对象,它在这配置,把S信息都在这配置,相当于呢,他做了第三步将创建的。
10:02
Solid,然后呢,添加到添加到咱们这个contest中,然后呢,它添加的时候呢,这些都是可以指定的,我们来看啊,比如他在这添加映射点过来,哎,这个映射方法呢,会留给我们,让我们来自己来写,哎,这个方法就留下来了,这是我们第二个,那我们第二个看完了以后呢,再来看它的这个实现。我们来看这个接口,哎,这个抽象类,它下边呢还有一个类,这个类呢,按照名字它叫abstra a notation,这是利用注解配置方式的初始化器。它呢是咱们这个注解方式的,咱们注解方式配置啊,咱们这个初始化器。好,那么这个里边它做了什么呢?那其实跟前面大致都一样了,它这个里呢,诶它也创建root web root application conest,这是它这root呢,翻译过来就叫创建更容器,相当于呢,就是重写了它这个抽象的负类里边的这个方法,哎,这个创建更容器,而创建更容器的时候怎么创建,大家看一下,首先呢,它获得一个配置类,哎,我们以前是配置文件,现在呢,它获取配置类给我们用一个这个application context,相当于用一个LC容器把配置类加进去,然后呢,这个IOC容器相当于就得到好这个呢,相当于利用这个方法传入一个配置类,那么这个配置类呢,其实就是我们可以自己写的,我点过来,诶,这是抽象的留给我们。那么接下来呢,它还有一个方法叫创建application contexttest。
11:58
它叫创建web容器,Web的IOC容器。
12:03
Loc容器这个方法,这个方法呢,其实又相当于哎重写了这个啊抽象类的这个方法,它来创建这个web容器,那这个web容器呢,以前是直接来创一个直接啊给里边添加,那我们现在来看它,它是怎么着呢?哎,它呢就是利用咱们这个配置的方式,哎,这个a notation注解配置的方式,把我们这个配置类得到,哎,给我们创建一个这个相当于注解方式的LC容器,然后呢,把配置类放进去,诶这个配置类的获取点点一下,这也是抽象的,可以留给我们,好,所以呢,它也是就获取配置类就行了,获取配置类然后呢。就是利用这个方法,那其实呢,说白了就是一句话总结。
13:01
只不过呢,这些东西都是抽象的,那我们自己来,我们可以要以注解方式,以注解方式来启动Mac,我们不写,不在web中进行配置,那很简单,我们只需要实现啊,如果我们是希望以配置类的方式,那我们实现它。来实现它继承应该叫继承,继承它,然后呢,继承它,继承它呢,它里边会给我们留一些抽象方法,哎,我们来实现咱们这个抽象方法,相当于用来指定咱们L的咱们这个配置信息,然后呢,这个信息呢,我们指定好以后呢,人家会自动的把我们这个东西给我们添加到咱们这个。Count对象中,好,那我们就来这么来做,原理呢,我们分析清楚了,那下一节课呢,我们就按照这种方式我们配置出来,包括呢,这种配置我们直接呢,也可以在spring的官方文档这一块呢,我们来往下看,诶spring官方文档呢,建议是啊,有两个父子容器的啊,形式跟我们以前的用法一样,哎,有根容器,有web容器,Web容器呢只来扫描ctrler啊,Reserve啊,咱们视图解析器等等和web组件相关的这些功能组件,而我们这个更容器呢,来扫描业务逻辑组件,包括呢控数据源,做事务等等等等,哎,我们这个父子容器的配置,那么配置呢,就是用下边跟我们分析的一样,直接利用它继承一个它就行了,那下一节课呢,我们就把它配置出来。
我来说两句