00:00
好来,接下来呢,我们就来按照我们刚刚分析过的这个啊,来去给大家什么呀,具体的实现一下啊,回到我们的开发工具中,那么我就不在刚刚的这个代码里面去写了哈,我再来一个工程。这个叫程零四了是吧,叫0404就零四吧,嗯,这样好改一下吧,零四不咋好是吧,我把它改成什么呀,改成这个0301是吧,就刚刚我们写过的那个工程啊,我又改了个名字,你看到没。不让改了啊,因为我这个已经部署进去了是吧?啊把它移掉啊。啊,改成0301啊,然后呢,这个位置呢,我也给它,诶也改成0301了是吧?啊然后呢,我把这个工程呢,我再去拷贝出L一个来啊CTRLCCTRLV,我叫0302,能看明白吗?0302啊好在这个工程里面大家注意了啊,我把这个该删的都把它删掉啊像这些东西呢,都把它删了啊,我们都不要了,我们重新来去写啊啊这个呢啊,这个先留着吧啊先留着它,然后这里面呢,这个外部的插庙中的哎,这些东西我们也先把它删了,暂时我们是不会用它的,明白吧,呃,暂时不会用它啊啊呃,然后像我们的这个其他的东西的话呢,就都都留着了啊OK,那么现在我们的想法是什么呢?你看好了啊,我去创建一个配置文件,这个配置文件呢,我们就叫做application contact的插没能看懂吗?这就是我们的poon的配置文件,好,我来给你讲啊,哎,Po的配置文件好那。
01:44
为了更好的演示呢,我们再去写上一个啊,一个类啊,具体的一个类就是com点艾特硅谷。啊,我们叫SS吧,对吧,就是po以及SPAVC啊,然后呢,有一个BS,这个BS下面的话呢,我们去扭上一个class啊,我们就是还是按照我们讲point的那一套来去做啊,我们写上一个person,在这个person里面的话呢,我们给上一个字符串类型的name,好,然后呢,再加上我们的这个。
02:15
干赛的方法啊,呃,再加上突斯俊就不要了哈,我再去写上一个,比如说say hello啊,写上这个方法,然后这里面呢,我们来输出一下什么呀啊输出一下就是我的名字是吧,好,加上我们的内容,这个能看懂吧,OK,然后呢,我把这个呢,配到我们的这个spring容器中,我就把它当成一个普通的病给它配进来,好,Class呢,就是我们的person,这个能看到吧,给它个ID啊,ID等于person,好,那么这个里面呢,我们给它注入一个值啊,它里面有个内部属性啊,我给他注入一个值,Value流呢,就是等于什么呀,比如说。好,加C能看到吗?OK,把它写到这,那么大家来看,现在就是一个很典型的我们在讲的时候我们写过的代码,那么接下来我想拿到这个,呃,容器里面的这个对象,我们以前的话是不是写个测试方法,直接去拗它呀,现在不能这么干了啊,明白吧,现在我们去模拟这个外部环境,怎么模拟外部环境的,比如说你看啊,现在我先不经过这个spring Mac,我就直接去拗一个什么呀。
03:27
你有一个solve,大家还记不记得?嗯,好,我去有一个solve,然后呢,改个包名,我就叫做什么呀solve,好,Class name的话我就叫做hello so先直接finish啊好,这就是我们的一个web,你就把它当成我们的handler就行了嘛,对吧,Handle其实底层不就是这个家伙嘛啊,把它当成我们的handle德了,然后这里面的不相关的东西呢,我把它去一去啊,我们看的这个结构清晰一点啊,这些东西都给它去一下。嗯,来把它也去一下啊,这个去一下好,那么将来你看一下我的请求来了以后呢,是不是要去执行我这个读盖的方法呀,好,那么在这个里面我想去访问到什么呀,访问到我们的spring LC哎,容器中的什么呀,这个破损对象,那么大家来想一下我应该怎么做,如果说只有这么一个so的话,那你直接在这地方去把它扭出来是不就行了,嗯,对吧,但是将来我的S是有N多个的,这也有一个,这也有一个,这也有一个,我每个里面的都要去访问到我LC容器里面的一些什么对象,那你能在每个里面都去用上一个吗?你用没用一个,那就是一个全新的对象,这个里面呢,跟这个里面呢,就没有任何关系了吧,对不对?所以说我们根本是不能这么去做的,所以说现在我们就要去想办法,能不能获取到这个LC容器对象,并且呢,每一个S里面获取到的都是同一个LC容器对象。
04:53
对吧,并且呢,我在这个地方是获取,而不是说把它创建出来,因此我们的对象的这个LC容器,对象的创建时机一定是在这个请求到达它之前的,所以说我们怎么创建呢?我们就要去写上一个监听器,有一个直接写listener,这个是不是也写过呀?好,SS点我们叫做listener好,名字的话我就叫什么叫做my solve contact listener,好下一步监听谁呢?我们监听的是solid contact的谁啊,是不是生命周期啊,所以说呢,我们把这个打上钩,打上钩也就说明它去实现了这样的一个接口,好来直接finish进来以后的话,我们也是把这个不相关的都给它干掉啊,有一个构造器不要了啊,这个也干掉,这个干掉啊,这个干掉,这个干掉,大家看一下它是不是帮我们去实现了这个接口,在这个接口中啊,它有两个抽象方法,一个是contacttrat,一个是contact。
05:53
那我来给大家解释这个方法,就是我们当监听到谁呀?Solid contact被创建好指是什么呀?诶执行该方法,那你看一下这个对象是什么时候创建的呢?Solid的content值对象就是他们开的容器一启动它就会被创建的,对吧?你看我把那个构造器给大家拿出来吧,但不能写到它里面是吧?写到它里面好用是吧?好,那我们这个看不到哈,就什么意思呢,一会这个s contact呢,肯定是要被创建的,它一被创建好,那我就执行这个方法,那我在这个方法里面我做什么事呢?我就做这么两件事,第一件事好,创建我们的point的LC容器对象好,第二件事呢,我们就什么呀,将的LC容器对象好绑定到我们的中,理解了吧,怎么创建的?
06:53
创建对象的话,还是你以前那个方式,直接该拗你就把它拗出来,反正你注意你只能拗这么一次啊,如果说你要拗多次,那肯定就不对,当理解了吧克class passma application啊,还是这个熟是吧啊来吧,这里面写什么呢?写的就是application play contact2叉没哈,把它写到这,那么创建好以后呢,我们需要把它放到solid contact,就怎么放呢?首先你要获取到我们的solid contact对象,因为它已经被创建出来了,说出你是能获取到的,怎么获取呢?我们通过这个事件对象来去获取啊,叫做SECE.get solid是不是获取到了,获取到以后呢,我们再把它绑定地址sc.sitetribute比如说哎,你这就叫做什么呀,就叫做application contract吧,好把谁放进去啊,把你的ctx放进去是不可以了,对吧,那么这样的话就是只要你这个对象一被创建行我的L。
07:53
自种机对象就被创建了,创建以后呢,我也把它放到了这个solid contact对象中,那么将来我请求来到我这个http solid的时候,在这个位置我就可以什么呀,从我们的solve contact对象中是不是获取我们的po LC容器对象了,能明白了吗?因为什么呀?因为整个web应用的组件,这就是web应用的一个组件吧,这个组件它是要去共享我们的这个solid contact对象嘛,因为它只有一个嘛,对不对?汤开的创建它就创建了,他开的销毁,他汤开的关闭,它就被销毁了吗?整个生命周期中只有只有这么一个。
08:32
理解了吧,OK,好,那我们就抓住它的这个特点,我们就可以这么来做,你看哈,怎么做呢?首先我还是要去获取到我的SC,在这个里面怎么获取呢?直接get solid contract就可以了,Solid对象它能直接获取到solid contact,明白吧,来获取到以后的话,我们就来获取我们的容器对象application contact cx等于等于什么呀?SSC叫get atribute哈,我们叫做application是不是它呀,然后呢,这个地方我们需要做一个强制转换application contact,好,那么这就写好了,写好以后的话,我们再从这里面来获取我们的破对象,那怎么写呢?Person person就等于Ctx.get b好,我给上你一个ID,然后呢,再给上你一个类型,这样是不是获取到了,获取到以后呢,你再pos.c hello,去调用一下,是不是调到它了。
09:33
理解了吗?那么你来想,我在当前的这个so里面能这么做,我在别的so里面是不是依旧可以这么去做呀,对吧?但是你每次拿到的绝对是同一个so对象,从它里面拿到的绝对是同一个application对象,明白了吗?好,那我们接下来来试验一下啊,怎么试验呢?因为我刚刚直接用的是listener,直接用的是骚费者,所以说呢,他已经帮我配好了,你看到没有,这是我的骚费者的配置,这是我的listen的配置,是不是都配好了?好,配好以后,那我接下来我们只需要来启动一下这个index页面,Run as,我们来跑一下。
10:17
好,然后呢,现在我们不要去点他,点他没用是吧,我们要访问谁啊,我们直接访问一个是不是hello,是hello sorry,谁啊。零二是问他为什么问他的,你看外面的,你看下这里面配置的,我的这个是不是这个请求啊,默认配好的吗?对吧,默认的不就是跟你的这个hello solid这个名字一样吗?而他默认不就用的是类名吗?想起来了吗?想起来了吧?OK,好,来,那我们就直接访问它来回车。怎么了404啦。
11:01
0302,我这改了没。没改啊,那我改的是谁呀?我复制过来没改是吗?好,那改一下啊改一下我重新来一下,好来重新来一下。不改肯定是不行的是吧。好,来这一次0302,我们来访问谁呢?就访问我们这个走一下。还是没写错吧,Serve hello,没写错呀,怎么会有问题啊?0302是他没问题吧。0302好,稍等一下啊,我来把这个重新啊清理一下啊,看看是不是这个服务器的问题啊,把它去掉呃。
12:06
这里面还有是吧,有的话我把它删了。看到了吧,啊,把部署的这个都删了啊,然后你这个该清理的你就clean,看到clean你就点是吧啊点的差不多,那这个也点一下project里面有个是吧啊都清理一下,然后呢,再去跑一下啊。好,启动没报错吧?好,那么现在我们来访问0302 hello sorry,走一下,诶你看一下现在就没问题了吧,这个是不是已经出来了对不对?OK,所以说现在的话呢,我们就能诶正常的什么访问到我们的po的容器了,那么你看一下现在不就是外部环境下,我已经把这个po容器给它搞定了吗?能明白这个过程了吧?OK,好,那么其实对于我们在po mvc里面来讲的话,我们其实不用这么麻烦,为什么呢?因为人家帮我们提供好了一个监听器,叫做什么呀?叫做contact loader listener这个监听器,而这个监听器的写法跟我们自己写的那个原理是一模一样的,听懂了吧,所以说接下来注意了啊,我把我们刚刚写的这个过程呢,我们就不再演示它了,接下来我们通过破MVC提供好的监听剂来去给大家。
13:34
大家,哎,把它配上,然后呢,给你解释解释啊OK。
我来说两句