00:00
来看一下LC容器中bin的生命周期。这块呢,有两个词哈,一个叫容器,一个叫生命周期,这两个词呢,似曾相识。我们回想一下,这样我们学习的时候呢,那个tomcat服务器,我们也可以称之为S容器是吧?S容器呢,可以来管理整个S的生命周期。当时说呃,先创建sol,然后立即调,依你的方法。每次请求的时候呢,去调那个service,在容器卸载当前项目之前去调那个转方法还记得吧。那我现在这个IC容器可以可以像容器管理那样来管理bin的生命周期。这个过程呢,这样是吧先。创建B的实例,然后呢为属性赋值。
01:01
包括呃,对其他病的引用,然后我们可以调用bin的初始化方法。啊,并可以使用了,在容器关闭之前可以来调用bin的销毁方法。我们可以通过。并声明里边的method跟destroy method来指定。Bin的初始化和销毁方法。看一下。我来创建一个spring的配置文件。Cycle。X。碰见一个包。给一个car。着急。
02:02
He thought。Half。Contractor。Private。Fund。Sad。Without'。S。Public world in it。初始化方法,Out。再来public boy的John。She thought this fun。搞定。配置一下。B。ID卡。
03:04
Cycle里边的。Property brand赋值value。奥迪。这指生命周期的in的方法,Out斜杠,看看很多方法是吧,我们找到这个in。里边说一下哈。我这个初始化方法的话呢,就一个init,实际上这个名叫什么无所谓,并不是说啊,这个叫in,你它也叫in,并不是这样啊,来看专用方法。Okay。创建一个特式的函数。Mean。F2。
04:03
对。或举抗对象。等于no。定什么IOC?6PLUS X。Application contact。这个名呢,叫。spell.xml。Pdx。然后呢,这个car就可以使用了啊,我们下面我们来看什么NB。容器,LC容器。CDX点。不表啊。大家想想哎,怎么怎么来关闭这个容器来着,我们说这个application context这个接口有一个子接口,就它呀,这里边提供了那个坤的方法是吧,那干脆我们给它转成这个类型得了。
05:15
这个可以关BTX点。有一个。类型转换异常。配置的问题吧。Circle car。Mean。Spel里边哦,这没改是吧。对。
06:01
我们看尖调的构造器,看到了吧,然后呢。设置属性调的init,返回这个bin,你可以这里边调B的任何方法,这会儿在容器关闭的时候,我来调这个destroy。这就是我们目前的这个整个生命周期的流程。五步。那我通过method跟destroy method可以来为B指定初始化和销毁方法。那实际上呢,我们还可以。更细力度的来定制这个病的生命周期方法。嗯。润里边提供了一个bin叫bin的后置处理器,它允许在调用初始化方法的前后对bin进行额外的工作。呃,额外的处理bin的后置处理器,对IOC容器里所有的bin。
07:01
进行逐一的扫描,而并不是处理某一个实例。那典型的作用呢?比方说我检查并。属性被赋值的正确性,以及去修改部分属性值,我们都可以通过它来搞到。那么我们在后边我们讲的这个,比方说我对这个属性检查的这个后置处理器就是一个典型的bin后置处理器,呃,对B的后置处理器而言呢,我们需要实现一个接口叫bin post process,这里边有两个方法,一个是看这块after,一个是before。就是。After in it跟before in it。那我们需要在我们的这个IOC容器里边呢,把这个并后的处理器给它配置上,但你不需要指定ID loc容器会自动的识别,诶这个并特殊哈,它是一个并in后置处理器,它就会在对应的时候来执行对应的方法。
08:01
那加上我们这个病后的处理器之后的话呢,这个生命周期就可以变得更加细致了。新看代码。B的后置处理器,我来写一个哈麦。Post for。接口being both of。好的,打一句话就叫before it。加。再加后边这叫什么呀?加in的name,需要注意的是啊,我们要把这个并给返回,当然你也可以返回一个修改,修改后的,乃至于返回一个新创建的都可以,那通常情况下我们要这个呃,进行检查,然后把这个原生的病给返回。
09:07
那你也可以说我创建一个新的,把那个新的返回没问题。这个权限呢,就非常大了是吧。来给他。配置文件里边配置。B。或者处理器。B。MY。Been post。OK。再看一下这个生命周期的流程。大家看哈。构造器。为属性赋值,是不是叫in before in car car?
10:01
然后in,诶怎么是两个呢。哦,这应该是B是吧。拜拜。我们看哦,这是构造器为属性赋值,然后呢,Before in it啊这个是那个。对象本身car car这个be name哈啊in,我们说在init前后来到这个方法吗?呃,这个是这个car这个对象,然后是呃,B b name,然后是。使用这个。使用这个B是吧,我们在这个。没方法里边打印的吗。这这,然后是join看到了吧。那我这个bos process会很强大。我甚至可以偷梁换柱,对不对?
11:01
换一下比方说。我们写的这个家伙叫啥呀?这不就奥迪呀,是吧,我把这个换掉没问题。那我重写一下它的储存方法。重写一个杜顿。好,我在一个里边给他换掉,我们看创建一个卡。差点set and。不错。OK。看一看,注意哈,我是在after这块给换掉的,找一个。嗯。这一块还是奥迪,但打印的时候是不是已经变成福特了呀?这块给换掉了嘛,是吧,OK,这就是我们演示的如何来用这个bin post processor,那我们注意到这个bin post processor啊,它是要处理所有B的,所以说正常情况下的话呢,我可能还需要对这个病进行一个这个嗯过滤,我要处理。
12:17
指定的,比方说car in name OK这样的一个效果。闹了吧。在这,我们来写一下这个后置处理器的使用方式。实现这个接口。实现这个接口。病。具体。
13:01
提供。两个方法的实现。两个方法,按一下这个方法。和这个方法。的实现,第一个方法呢,是在之前。In it。之前被调用。这个呢,一尼他。Method之后被调用对吧。其中两个参数并就是并实力本身。
14:01
而这个b name是LC。容器中。配置的病的。名字。那我们说返回值,返回值是什么呀,是实际。上返回给。用户的那个进。注意。可以。在。上面以上。两个方法中修改返回的。病。甚至。返回一个新的B,看到了吧。
15:03
这个配置呢,非常简单,不需要。配置ad。IOC容器。自动识别。是一个识别。是的哥。In。影后处理器。以上就是我们说的这个in process。再来看一下加完这个b post processor之后这个生命周期,生命周期的流程。首先。创建这个病史例,然后呢,为属性赋值,或者是呃赋给对其他病的引用。调。B post processed before in方法。调in method的方法,调after in方法,并可以使用了在容器关闭之前调这个design method的方法。
我来说两句