00:01
来,我们来解决一下po LC容器启动的这个问题啊,大家先不要去看,往下面看啊,你当这个东西不存在是吧?啊,我们都来去想,呃,我们在讲这个point框架的时候。我们是怎么启动的LC容器啊?或者说怎么创建的LC容器啊,要么呢在慢方法中,要么呢在什么呀,测试方法中,是不是直接去拗一个LC容器对象啊,就相当于我们在讲的时候压根是没有外部环境的。对不对,那么没有外部环境的话呢,我们就直接在测试方法中,诶,去把这个容器对象给它拗出来就可以了,但是现在我们要想我们是有外部环境的,你请求来了以后呢,你还能在那个测试方法中去创建这个support的容器吗?你想想这个能对接上吗?能行吗?不行吗?你请求来了以后,你是要给人家去处理请求的,你跟你的那个测试方法跟你的卖方法有关系吗?没有关系,所以说现在我们就不能像那个非外部环境下面直接在办方法或者是测试方法中去把它用出来了,而是我们要去想一个解决办法,对吧?我得把这个容器呢,想办法给它创建出来,然后呢,等请求到达以后呢,我就可能会用到你这个LC容器里面的一些东西了。
01:29
对吧,比如说我们在处理一个请求的时候,那我就可能会用到我的service,用到我的DAO对吧,这些东西你就提前帮我准备好了,你不能说等我请求来了以后,你说你先等会儿我去给你创建个容器局,对吧,这肯定是不合理的啊,所以说呢,这个位置大家注意了啊啊我们呃来给大家去说一下,加一点东西啊加到这。好,加上这个第四个点吧,好,我来加个东西啊。啊诶,怎么跑到十了,这个不是一个编号编码吗。
02:05
这是骗人,骗人的。这也是啊。那行吧,我就手写一个吧,好吧,大家能看懂就行了啊好来第四个我们来说一下,就是呃,如何去哎启动我们的这个啊,如何启动我们这个point的这个LC容器啊啊呃,那么我们其实呢,分两种啊,第一种的话呢,就是非外部环境啊,就是我们没有外部环境下,我们的这个po MC容器怎么启动的,就是我们直接,哎直接在我们的慢方法或者是测试方法中吧,哎,就是我们这个je测试方法中,好,通过什么呀,通过new操作来创建即可,好但是放到我们这个we部环境,我们怎么做呢?我们可明显是不能这么去做的啊,那么我们希望怎么做呢?就是我们希望啊point的这个LC容器在。
03:13
什么呀,在我们的web应用服务器啊,Web应用服务器启动时啊,就被什么呀,就被创建,那么这样的话有什么好处呢?就是只要我这个汤CAD1启动,那么整个的这个环境我都给你准备好了,接下来我就等着你的请求过来,然后我帮你进行后续的处理就可以了。这是我们希望怎么来做,那么希望归希望是吧?啊,你还得有落地的一些东西,怎么来实现啊?啊OK,那么在说这个解决办法之前呢,我们先来分析一下spring mvc,它的这个容器对象是怎么怎么怎么启动的。这个现在你们能说出来吗?诶,在我们的web的插L中是配了一个dispa solve对吧?OK,那么这个dispa sum呢,是在他们开始启动的时候就被加载的吧,因为我配置了一个漏档on start啊是不是OK,那么你在启动的时候就被加载了,好那么加载的时候呢,它里面有一个in para,而这个in para指向的就是我们的support Mac的一个配置文件,那个配置文件。
04:30
是不是就可以创建出我们的spring Mac的容器对象来了,对不对,OK,这是Mac,好,那我们就来想一下,我能不能也在这个to开的容器启动的时候呢,去找准它里面的某一个时机,然后呢,去把我们的point LC容器对象也给它创建出来。对吧,现在就来考验你们的这个。技术体系了啊,看看你们能不能找到与这个汤的启动对应的一些东西。
05:04
啊。听我说吧,哈来想不起来,那你就好好听我讲是吧,我们可以怎么做呢?我来给大家去分析这个原理,我们会用到一个技术,这个技术叫做监听器。好,赶紧想监听器是个啥来着是吧?啊,监听器listener对吧,它可以帮我们去监听一些事件吧,什么事件来着,生命周期的事件,还有数据绑定这个事件吧,OK,好,那我就通过监听器,我去监听一个对象的创建,监听谁的创建呢?那我们还得去往这个他CAD启动这个环节上面去靠。那你就想监听技能,监听的无非就是request session,还有service contact,对不对?那你挨个排除嘛,Request请求到达以后才会被创建,太晚了,Session是不是也是请求来了以后才会被创建的吧?也太晚了,那么solid contact呢?
06:09
还记不记得web应用上下文对象吗?对不对,整个web应用中只有这么一个对象,它是随着tomcad的启动而创建,随着tomcad的关闭而销毁的,是不是它就特别合适啊?嗯,对吧?好,那我就监听这个solid contact的创建,因为你一被创建,那么肯定现在你正在启动他开的容器,好,当我监听到你被创建的时候,我就把我的point LC的容器也给你创建出来,明白了吗?OK,这是一个创建时机,我们就找准了,找准以后我们还得再往后分析,你创建出来这个point的容器,那么将来我想要从容器中去获取各种各样的组件,获取各种各的并对象,而且呢,我还不敢确保说谁要到它里面去找这个东西。
07:02
对不对?所以说我们就在想,我一定要让我的point的LC容器能让我所有的handler service以及那个D,我们就不用再去想了,理解吧,啊,我们就拿这个handler来给大家举例子,我想让我的每一个handler都能看到你的这个surprise LC容器,并且能从你里面呢去找到我想要使用的一些病对象,比如说你要把service给我注入进来。你能明白什么意思吗?因为我们的service是不是给它配置到谁里面了,Service DA是不是将来都要存在到这个LC容器中的吧,对吧?而我们的handle呢,它是在我们这个Mac容器中了,这个我们是不用去管的,那么将来我的handle了,要去调用service,那你service你就得给我装配进来,你要装配进来也就相当于我的handle了,我得能访问到这个LC容器吗?是不是这个道理啊,OK,好,因此我们还得去考虑这个容器对象创建好以后,怎么让我的组件去共享到这个对象。
08:02
好,那么大家赶紧再来想,怎么就能让他们共享了呀?是不是还是对象啊,因为它本身是不是也是一个对象啊。你想是不是一个预对项啊,对应的不就是我们的吗?是不是还记得吧,这个对应的就是applicationco,好,那我就把我的s support LC容器对象创建好以后呢,我直接再把它绑定到我的solid con中。那么大家来想我在每一个。什么呀,比如说我们就拿so来讲,我在每一个so里面是不是都可以啊访问到我的so contact,也就意味着我就能访问到solid con里面的support的LC容器对象了,进而呢,我就能从这个对象里面,从这个容器里面获取到我想要用的一些病对象了。明白了吗?啊,为什么我拿这个so来举例子呢?因为你的MVC的这个handle了,它底层就是so呀。
09:07
是吧,从第一天开始我就告诉你了,SPMVC底层就是我们原先的那一套web,那一套底层就是。能明白了吧,所以说最终我们的这个解决,哎,思路是什么呢?我给大家写到这儿啊,就是怎么解决呢,我们通过好通过监听器来什么呀,监听我们这个这个contacts。对象的创建啊,我来监听到这个对象的创建以后呢,我就什么呀。好,然后呢,监听到对象被创建,好监听到这个的框架对象被创建了,那我做什么事情啊,哎被创建我们做什么呀,哎就创建我们的point的这个LC容器,哎LC器并且呢,还要做什么事呀,好并且要把什么呀,并且将我们的这个这个容器对上,好绑定到我们的谁里面啊。
10:19
绑定到我们的solid中,然后呢,让所有的什么呀,让所有的这个web应用啊,就是我们这个web组件能共享到我们的谁呀。LC容器对象为什么能共享到啊?因为所有的web组件,只要你在我整个这个web应用里面的这个组件是不是都共享同一个solid。对吧,那我拿到solid contacts,我就能从这个solid里面去拿到我绑定好的LC容器对上。能明白了吗?对吧,这就是我们的一个解决思路啊,所以说呢,哎,如果说这个东西你听不懂的话,那么肯定是我们之前讲的这个监听器,以及solid contact,对吧,这两个话题大家可能还是。
11:07
啊,有点薄弱。对吧?啊,如果是忘了的同学呢,那你回去呢,再把它好好的去回顾回顾,再去看一看啊,那么今天的话呢,我们就诶先来把它做出来,大家呢,跟着我一起来看一看啊好,那么把这个思路诶我们讲明白以后,接下来我们就来自己写代码去模拟实现一下。听懂了吧,OK。
我来说两句