00:00
好,我们前面呢,通过一些简单分析,为这个安PE接auto proxy create有关后置处理器以及自动装配并翻的这方法打上断点外呢,我们也为这两个方法calcul的创建,包括呢log SP的创建来打上断点,然后呢,我们来启动容器啊,我们来启动咱们这个测试看一下呢,他们整个流程这有debug好启动。启动呢,会先来到塞宾方方法,那么这个S是怎么来的呢?我们也可以看一下,哎,前面有一个T01,从TEST01我们先开始看,那么第一步,哎,第一步我们就是要创建一个IC容器,我可以整个记录一下这个方法的调用流程。流程流程第一步我们先来创建咱们这个IOC容器,那我们是调用它的这个一带了一个有参构造器,我们传入了mancon,传入主配置类,传入咱们这个配置类创建LC容器,那么呢,怎么创建呢?我们就来到这儿,哎我们点它上边我们来看就是这个有层构造器,它分为三步,哎,首先创建哎无参构造器创建对象,再来注册啊把我们这个配置类注册进来,然后调用refresh,我们可以来说一下第二步。
01:35
注册配置类,注册配置类,然后呢,调用我们有一个叫瑞瑞方法,瑞呢是容器刷新的意思,要用瑞刷新容器。刷新容器,那么刷新容器呢,就是要把容器中的所有并创建出来,包括所有功能我们都做好,就说呢,这就像初始化容器一样,那么呢,我们接下来看容器刷新是怎么做的呢?我们点到528行。
02:09
好在这一块呢,它是锁定到这个代码,但是呢,我们来看前边这个re方法,我们发现呢,流程还是挺多的,哎有非常多流程,但是呢,有一处流程叫register being post processor注册being的后置处理器,它作用是什么呢?诶我们看上面注释,注册咱们这些B音的后置处理器,它用来拦截我们B音的这些创建啊现在呢,断点是打到这儿,哎停在这,然后呢,我们这有一个有一步叫注册并的后置处理器来拦截,来方便拦截B的创建。那么它这个后置处理器的注册逻辑又是什么样呢?我们可以看一下前边,哎,它会调用这个方法,我们再往前走,哎,我们来锁定到前面,它会调用这个方法,这个方法只是调用,但是呢,我们来把整个的。
03:16
这个大方法我们来看一下,诶,Register being post processor注册我们这个B的后置处理器,怎么注册呢?它第一步你看先拿到IOC容器中,Get names for,你看吧,我们以前调过按到类型,在拿到IOC容器中,我们所有需要创建的后置处理器。就是它这个怎么创建的第一步,哎,先获取,先获取LC容器中已经定义了的需要创建的创建对象的所有being post process。
04:00
哎,为什么IC容器中会有一些已定义的呢?就是因为我们第一步,哎,我们创建IOC容器先要传入配置类,而我们在解析配置类的时候,哎,我们这个配置类里边有一个ASP接auto proxy,它呢,我们之前说过,它会为我们容器中注册一个这个啊后置处理器的定义,包括呢,这是我们这个注解做的事,包括容器中还有一些默认的咱们这个后置处理器的定义等等等等,所以说呢,我们走到这一步的时候,容器中已经有一些我们将要用的这个后置处理器,只是呢,还没创建对象,都只是一些定义,哎,也就说我们有哪些后置处理器,那么们还是来到这一步,拿到所有这个需要创建的后置处理器,我们在这儿,诶你看这就有这么多有o two处理O注解的后置处理器,处理块注解的后置处理器,还有一些普通注解的后置处理器,以及我们这个有一个叫影。
05:01
Internal auto,大家来看internal auto。哎,我们来之前分析a aspect接autoy的时候,我们发现,诶,它会给容器中是不是注册一个名字叫internal auto create的组件啊,如不过呢,当时注意注册的是being DeFinition being的定义信息,也就说呢,当时只是保存B应的定义信息,而这个定义信息啊,它的类型就是它我们还没创建对象们接下来就要按照这些并定义我们来要创建对象,所以说呢,好,我们还是来到这个方法,那么我们容器中所有我们要创建的post processor我们已经看到了,那么呢,它这还有一其他的逻辑们也可以看,它给冰番锤中额外还加了一些其他的post process,哎,除过找到这些外,我们也可以把这个写上给容器中,给容器中加。
06:08
别的post being post processor,也就说哎,人家想要加一些其他的post processor,那么呢,这个我们不说,主要呢在这。这有一个,它这有一个呢,叫分离,我们这个post processor哪些是实现了啊,Order和实现了order的接口,包括呢,是我们原生的啊,没有实现什么接口的,所以说它这一块呢,把这些呃being post processor还做了一些处理,哎,比如你看拿到所有我们这些being post processor他怎么处理呢?他来看我们这个是不是啊。Priority,咱们这个order的接口,我们点过来,这个呢,其实是order接口旗下的,它是有优先级排序,那么我们这些post process,我们也可以实现这些接口来定义他们这个post process工作的先先前先后,那呢他在这呢划分了一下,诶是这个的啊,怎么保存在什么这个process process里边啊,如果是这种的又保存在这里,哎所所以说它这做了一个区分,哎然后呢,它有三步,第一步先来注册being po processor,哎,Priority order的相当于优先。
07:34
啊,那先来优先优先优先注册,我们这个实现了实现了接口这个接口的being post processor,那么呢,我们来看到这是它接下来next,第二再来注册,实现了order接口的process,然后再来注册。
08:00
再来给容器中,再给容器中注册实现了这个接口的应post processor,如我们以前的这些process,它做了一个分离,哎,你实现了这个接口的有优先权,接下来order接口的17次,再到最后呢,哎,就是这些没普通的这些being post process没实现咱们这个优先级接口的。注册没实现优先级接口的being应post processor,好,这就是post processor,我们继续来看这些注册,而所谓的注册是什么呢?我们来到我们这个方法。点好,我们来到这儿,我们现在呢,相当于我们的这个internal啊,我们先即将要创建的这个internal autox cre,其实就是我们说的这个ation,因为哎。
09:00
我们之前的定义它的类型是它这个creator呢,我们可以来看是不是实现了什么order接口啊,点过来,再来点过来,哎,然后呢,它有什么proxy processor support点过来,你看有这个order接口,所以说呢,我们这个是相当于还有这个order接口,它是在order接口这,哎怎么注册呢?他拿到咱们这个being post processor的名字,然后呢,从being factor中来获取,诶,我们来看就调到了这个获取方法,我们要获取我们这个名字的being post processor,哎,要在这获取,但是怎么获取呢?我们再来看它又调用do get宾,哎。就是我们前边我们锁定的这个方法还挺长的,它调读get宾音调到了这儿,就是调GET3获取单实力的这个B应,然后呢,IC容器中第一次呢,又不会有这个应,所以说呢,第一次获取它肯定是有问题GET3个筒,哎我们来看,比如说呢,如果有问题获取不到,它利用这个factory的get object的方法,好get object,哎我们会发现现在呢,就是来创建鼻影,也就是说如果获取不到就创建鼻影。
10:18
所以说呢,我们现在就是需要啊创建啊注册being post process,实际上就是创建咱们这个b post processor对象,然后呢,保存在容器中,那么接下来呢,我们就来看它是如何创建出我们这个process创建,哎,我们当时想要创建名字叫它,哎internal auto如何创建这个的post process,然后创建它,但是它实际上要创建它的类型是我们之前说的这个。哎,我们就以它为例,我们要创建这个对象,我们来看它是怎么创建的,好get object在这呢,要创建并实例,好创建在这,Do create创建,但是这个创建呢,我们来看这个being实例已经创建好了,接下来该初始化了,所以呢,前边我们来看啊,是这个B的创建在前边。
11:22
一直往上走,你看这个毕竟在这,哎这有一个叫createre being instance,创建哪个实例呢?就是我们这个internal auto proxy creator,它的定义信息是什么呢?就是这个类型,哎,我们叫notation aware要创建这个类型的实例,创建好了以后呢,哎,我们就在这进行初始化,好怎么说呢,整个过程就应该是这样子,先来创建咱们这个实例,创建比应的实例,接下来呢,Being应的实例,创建完了以后,哎,就是我们接下来的populate being,这populate就是being应的属性符值。
12:03
哎,的各种属性赋值,哎,那么第三步我们来看,第三步呢,叫initialize b,这叫初始化B。初始化并应,诶这个初始化并应呢,其实特别重要,哎,因为我们这个后置处理器,我们being post process后置处理器呢,就是在being初始化的前后进行工作的,所以说呢,我们来看一下这个初始化,诶它在这呢,要进行毕初始化点进去,哎,点进去呢,这有一个叫VO aware muscles,哎,前面呢没有什么了,我先来看第一个叫VO aware啊如初始化并应的流程我们写在这,第一个叫VO awareman,什么意思呢?哎,我们就进这个方法里看一下,点过来。
13:02
我们来看,其实呢,它是来判断我们这个be应,哎,我们这个be应对象是不是aware接口的,如果是是不是这几个,如果是的话呢,就调用相关的aware方法啊,相当于呢啊aware接口的赋值。处理威尔杰克。的方法回调,然后呢,利用aware接口定义的这些方法啊,我们来进行处理,其实也是我们现在呢,当前这个being,哎,叫这个什么internal auto pro以及咱们这个being对象已经创建出来了,创建出来呢,只不过我们的这个being的定义,哎,它呢是之前我们有分析过,它是那个being factory aware接口的,所以说呢,我们就会进入这个aware方法,哎,进入这个方法正好呢,它也在进这个方法,但是呢,我们可以,呃,先不进,我们来看啊,这个aware如果执行完了以后会是什么,我们来看这有一个叫wap的鼻影,把这个方法调用来以后啊,返回一个被包装的鼻影是调用什么方法呢?是这个叫apply,我们来看第二个方法的调用叫apply being post process before in收。
14:25
这个呢叫应用咱们这个后置处理器的器的,咱们这个。Post process session方法我们可以随便记一个,看一看它是怎么应用的,点过去你看它是拿到所有的后置处理器调用后置处理器的和process before initial,哎,所以说后置处理器的调用在这后置处理器初始化之前的调用在这就是说呃,VR这些执行完了以后,是这个初始化之前,那我们再来看。
15:05
第三部。第三步我们来看啊,这是这个应用aware,接下来呢,还有一个叫invo in muscles,我们把整个步骤呢都给大家抠出来,Work muscles,按照翻译就应该知道这是,哎执行咱们这个初始化方法,哎,执行咱们这个自定义的初始化方法来,这就是呢,执行初始化方法,这个初始化呢,你可以用,呃,你可以用at并注解,哎定义的时候指指定一下初始化方法是什么,消毁方法是什么,我之前都说过,好,我们来看初始化方法执行完以后,哎,这是初始化,执行完以后有什么呢?诶又有一个叫apply being post process after initial。啊,这个是执行后置处理器的什么方法呢?来点过去来看打开它的实线,拿还是一样拿到所有的post process,所有后置处理器执行它的post process after引内受再生方法。
16:16
就是这个,所以说后置处理器的这个北before after前后的执行就是在这一块体现的啊,我们顺便就说一下,那么呢,我们还是来进入我们这个in work aware muscles,哎,这是我们这一块初始化并应的时候啊,我们要执行那些aware接口的方法,哎,怎么执行呢?正好我们判断我们当前的这个being a not aware,它呢,确实是实现了啊,Being factor aware接口的,如果是,哎,我们来点进来就来调用我们这个set being factor方法,那正好一步一步就分析来到我们这儿了,哎,调用abstract auto的set并分方法。
17:00
我们来点过来,就是这个set并范式,我们创建的是an notation aware aspi auto pro create对象,但是呢,调的是它,咱们这个哎负类的,我们这个set being翻方法,好,我们这一步就过来了,我们让它冲走,哎负类的set being翻被调用。哎,第一步是调用负雷的,第二步呢,我们来看,哎主要这有一个叫引匿的比因范初始化并因反点进来,诶我们看到调到了a notation aware aspi接就说我们要给容器中创建的这个安PI接自动代理创建器的这个in方法,这个in方法呢,哎,它相当于创建了两个东西,一个叫reflect,哎反射的咱们这接通知工厂,还有呢,咱们这个通知这个呃,构建器的适配器,相当于把之前创建的这个什么安斯贝尔街通知工厂以及冰翻水啊重新包装了一下啊只是这样,所以说呢,我们这个此至此,整个这么一个流程下来以后啊,我们刚才看了一下这个流程下来以后,我们的这个第四步,我们的这个啊,Being post process啊,我们是以这个为例。
18:21
1a notation啊,就是我们这个注解核心导入的这个process,这个创建成功,并且呢调用了它的啊set,咱们这个in need being function方法啊,得到了这些什么啊,Adviser工厂啊,这个呢,我们就知道了,它在这整了一下这些工厂,好把这个工厂的建造器什么这个adviser build也整出来了,并且了有呢这个build,好这个大家知道一下就行了,好我们整个这个in being就说完了,那么我们整个的后置处理器的注册以及创建过程,哎,这一块呢,是来注册后置处理器,哎我们呢,就以这个为例,把整个后置处理器哎的创建就说完了,那接下接下来我们来看后置处理器已经在容器中注册进来了,所谓的注。
19:22
图册是什么呢?我们可以再来看一下整个后置处理器,诶,初始化创建完,创建完这个并竟创建完,接下来呢,就应用各种什么呃,Before或者after什么in方法。好,这个呢,应用我们就让它过去,过去我们把我们的这个后置处理器创建完,诶我们这个instance就是它给它创建完走。好,创建完也一样,创建完好,创建完以后呢,会添加到我们已创建的那个并集合里边,这个我们后来再说好这个being呢,我们来给它,给它创建完还是一样好,创建完我们这个being post processor哎,我们这个being post processor就创建完了,创建完了以后呢。
20:14
走,它放进了这个什么internal这个啊,这个集合里边,我们创建了咱们这个being post processor,哎,这是由我们已经创建的这些,然后呢,他在这调用,给他排一个序,按照优先级排个序,然后调用注册,所谓的注册就是给being factor里边拿到所有的啊process调用being factor and就行了,哎,说这个。把being post process注册到being function中,注册呢,就是来调这个方法,哎,给being中添加being process,这个呢,我们整个being post processor添加过程我们就说完了。
我来说两句