00:00
好,前面呢,我们说了一下这个being factory post processor,在咱们这个being factory标准初始化之后来调用,这样呢我们就可以来修改和定里的一些内容,接下来呢,我们来看这个post process的一个接口,叫being DeFinition,就是being定义注册中心的这个后置处理器,哎,它是咱们这个being factor post process的子接口。我们来用他。来说它,那么它里边呢,额外定义了一个新的方法叫post process post process being register,它是什么时候执行呢?我们可以来看一下,它呢,允许我们来修改LC容器里边的being定义注册中心,在我们这个容器标准初始化之后,这是什么时机呢?是所有的合法的B定义将要被加载,但是呢,但是这些B应还没有初始化完成,也就说它的执行时机是在所有B应在所有鼻影定义信息将要将要被加载,哎,但是比应实例还未创建的时候进行执行,但是呢,听着这个呃,效果那应该是在。
01:34
In factory process之前,为什么呢?你看它的这个执行是在所有being的定义信息已经加载之后执行的,所以说而这是将要加载,那它就应该先来执行,我们就来写一个试一试。来写一个它的实现类测一测走,那么它来实现我们这个being DeFinitiong post process接口来有两个方法,第一个方法呢,它是来源于我们这个being post process规定的方法,第二个方法呢。
02:15
才是我们这个DeFinition registerg process process规定的方法,好,我们就在这两个方法里边,我都打印一下,这是my being DeFinition,这个post process,然后呢,我们就打印一下being的数量,我把这个冰方水拿过来,我可以get冰DeFinition count,我来看一看,包括呢,我在下边,如果它来执行了,我也可以打印一下咱们这个。这个process的这个方法,我们在这呢,打印一下的量,我们拿这个点get count,这呢就是咱们这个being定义的存储中心啊,鼻影定义信息信息的保存中心啊,这个注册中心呢,里边存了所有的being定义,我们以后呢,Being工厂以后咱们这个being factor就是按照这个being DeFinition registergistry里边保存的每一个D,每一个B定义信息,创建咱们这个being实例的,就是呢,我们这个being是啊单的还是多例的,包括的类型是being的ID是什么,都是存在咱们这个beinggry里边,而我们being工就是按照。
03:47
保存的这些信息给我们创建B,好,所以说呢,我在看数量,以后我还可以给这里边自己来注册一些B,哎,比如register b,你以前呢,也简单的用过来写一个hello,前面呢,就是咱们这个要注册的B的名,你将给容器中注册的being的名字,后边呢,它需要一个being DeFinition对象,那我们来又一个有一个叫root being DeFinition,以前呢,应该也用过,我们来写一个blue,我给容器中呢,准备来填一个blue对象,好,这样呢我们就填进去了,包括呢,你也可以用另外一种办法,叫咱们这个B音等于分啊build我们这个构建器,这个构建器里边呢,我们可以给它来生成一个root,那我们要给容器中添加组件,那就写blue class,把它的这个定义get DeFinition拿过来。
04:46
哎,这个构建器呢,生成这个传进来,这两个效果呢都是一样的,但是记住啊,我们这个组件写完一定别忘了给它加在容器中,然后呢,我们来进行测试,好,我们来测试这个类的这两个方法的工作。
05:08
好,我们在这呢运行测试,这个测试呢,大家注意诶,先是post process DeFinition registergry先工作,就是我们写的这个my being registry post process里边的这个方法先工作的,他呢拿到咱们这个LC容器中,现在应的数量有十个,然后呢,我们接下来给咱们这个regry里边我们注册了一个hello,接下来呢,他又工作,它是什么呢?它就是我们这个类里边的这个post process being factor他在工作,他呢在这里边诶又打印了一下的数量11个,因为我们在这个打印之后,我们又注册了一个,就有新的了,那么接下来我们这些beingg post process里边的方法都执行完了以后,才轮到我们外边的这些being post process,诶,这里边的这些方法他。
06:08
们拿到这些信息,11个他们都打印出来,包括我们创建了两个,对这也没问题,这就是我们这个要说的being registry post process,它呢是优先于优先于咱们这个being post process执行,我们可以利用它,利用咱们这个post process啊给容器中中再额外添加一些组件。啊,我们在给容器中再额外添加一些组件,就说呢,我们也可以用这种方式给容器中再来添一些组,但是为什么这个就要先与咱们这个post process执行,那么呢,我们也可以打一个简单的断点来看一下,那在这个register post process里边,好,我们给他的这个being DeFinition process规定的这个方上,我打一个断点,包括啊,我们来可以给这个方法也打一个断点,我以debug的方式运行。
07:20
走,我们现在呢,来到这个方法怎么来到的呢?我们来往下看,这有一个探索零一,诶第一步创建LC容器,哎,第一步呢,是我们这个创建容器,我们整个原理原理第一步呢,是咱们这个loc创建对象啊,我们这个LC容器准备创建,准备创建呢第二步,哎,我们来看我们创建IOC容器,接下来呢,IC容器要创建,要调用这个刷新方法,瑞士跟我们其实以前也一模一样,这re里边呢,我们来看啊,它调什么?它会调到VO being post process,它会调到refer里边的这个方法,其实就跟我们这个being factor post process一样,它也是在IC容器创建对象的时候会来调用。
08:21
这个方法,哎,都是这个方法,那怎么就能说我们这个being DeFinition就先执行的呢?我们可以来看一下,调这个方法的时候,好它在这执行,好在这执行,注意这个方法,这个方法的名呢,叫VO being DeFinition registerg post process来他呢把这个玩意儿currentg post processor拿到,这个呢,Process我们来看前边,哎,它是在这一块获取的,这块怎么获取的呢?诶,它是从容器中拿到这些being post process,然后呢,也一样,如果有优先级的,有还是各种按照优先级加的,那我们就不管了,所以说呢,我们现在就知道它的步骤,就是先从容器中获取到所有的being DeFinition process件,然后呢,我们回到我们这个坝。
09:21
拿到这些组件,这里边已经有了,那现在呢,就只有一个,就是我们写的这个processor,然后呢,进去来执行它,我点进去,你看啊,把这个组件呢,拿过来触发它的post process being DeFinition register,触发,依次触发它们的一次触发所有的post process啊对being DeFinition register方法,所以说呢,它就优先执行了,那接下来我们being工厂的那些怎么执行呢?比如说我们这些being factory post process post process什么时候执行了,注意啊,这是呢,先来执行了,我们这个post process being DeFinition register接然呢在后边,哎在后边它这呢还能执行,哎,我们这个current,这个registry里边,我们这些regry post process,哎,这个方法我点过来。
10:21
所以说呢,相当于他先把我们那个方法触发完,再来触发这个再来出发。还是一样啊,找到这些组件,先来触发,依次先来触发这个,再来触发,再触发这个方法,这个方法呢,实际上是在being factor post process里边规定的方法,但是呢,这都是针对being DeFinition registergry post process来说它的两个方法,这个方法先执行这个方后执行,那么我们后来的这些being factor,哎,我们写的这个being factory post processor,它为什么又是之后执行呢?我们来可以看一下啊,前面这是执行being DeFinition registergry post process往下翻诶看,找到RY post process,拿到这些还会按照优先级排序的,不管怎么着,排完以后在下边有影work冰番锤的点过去,诶,它来触发的,所以说呢,这一块是来触发冰番锤。
11:29
Post process这一方法,这些流程其实就是我们以前来看being factory post process执行时机的流程呢,后来再来他把前面的执行完,再来从容器中器中找到,找到咱们这个B音。Post process组,然后依次触发咱们这个post process这个方法,所以说呢,我们这个beingg,它规定的这个方法要于being post process这些方法的执行。
我来说两句