00:00
好,那们上一节课呢,说了这个being post process的原理,那么其实在spring的底层在对B进行初始化啊,创建以及赋值的时候呢,它也大量的使用到了being post process,我们可以来看一下W底层,对咱们这个post pro s,那么呢,我们就来看一下这个接口,点进去这个接口的实现类打开,那么呢,它里边有非常多的这个实现类,哎,我们写的这个my process,在这我们来说你看啊,比如这个anic,它就是来处理异步方法的一处理那个anic注解啊,我们后来再说还有咱们这个application contest aware processor,你可以点进去看一下,这个的作用呢,就是可以帮我们组。
01:00
里边注入IOC容器怎么呢?啊,我们可以说一下,我们想要IOC容器的话,比如我们这个do组件,我们只需要来实现咱们这个叫applicationest aware接口,我们实现这个接口,然后呢,这个接口有一个set方法,在这个set方法中,我们这个IC容器就会传进来,那我们要在其他方法用,我们可以把这个容器呢,就直接一保存就行了,那application contest好,比如呢,我去找application conest把它传进来的,哎。容器,我们用它保存起来,那么以后在其他方法我们就能用到这个LC容器了,那么这个功能是谁做的呢?就是这个applicationest aware process,我们可以看一下它的这个方法,比如post process before,在初始化之前,比如说创建dog对象,还没初始化之前,他先判断我们这个dog对象,哎,是不是实现了application aware接口或者其他aware接口,哎,有这么多,如果是的话呢,它就调用aware aware interfacece给里面注入值,那么怎么注入值呢?来他判断你是哪个aware,我们现在是application context aware,如果是那么呢,就将我们当前being转成这个方法调用,转成OB调用set方法,把LC容器给我们注入过去。我们在这就。
02:40
能收到LC容器了,这是我们这个dog对象,你可以对bug给大家看一下。我来debug调试。好,现在呢,停在这儿。停在哪呢?我们现在是do对象已经创建出来了,那创建出来以后呢,哎,它这个set方法会被调用,并且会把IC容器对象传进来,怎么能传进来呢?那就是我们这个post process工作,我们可以看,哎,那这个application aware1步,哎,它就是调用这个post process before initial,哎,判断我们这个B,并给它把这个值们调用这个方法注入进去了,这就是我们这个的使用。那么呢,还有其他的post process我们再来看,比如呢,还有一个我们这个叫哎,Being validation,这是我们在做数据校验的,我们点进去也可以看一看,当我们对象创建完,给我们这些宾进行赋值以后呢,我们还可以做数据校验,在我们web里边啊,用的特别多啊,页面提交的值我们要进行校验,那么这个校验呢,它在,哎初始化之前,我们可以有。
03:53
读初始化之后,读进行校验功能,校验功能呢就是在这儿完成的,包括呢我们也可以再来看。
04:02
其他的post processor再来往下翻,诶,比如这还有一个叫destroy a not being post process点进去它是干什么的呢?哎,它就是其实用来处理post construct以及pre注解的,也就说为什么我们这个dog对象它能执行in方法,能执行destroy方法呢?哎,因为我们标了这个注解,但这个注解哎它怎么就知道这个注解是要在初始化啊,前后还是什么时候执行呢?那么就是我们那个post process在工作,我把它打一个断点,我们进行debug,可以看一看走。好,还是咱们这个创建对象啊,我们这个dog创建对象,这个创建对象呢,先是进行set application啊,我们就把它先停一下,我们放行来到这个初始化来我我们来到这个初始化方法,我们看它怎么就能执行这个初始化呢?那么我们来看它之前之前诶大家就看到在这叫destroy being post process,哎这也就说呢,他在工作,他呢就找到了我们这个being,哎,我们这个当前dog being,这个dog being的这些生命周期注解,生命周期所标注的这些方法,它就找到了这个,哎我们生命周期注解,比如这个destroy,我们标注的这个销毁方法,包括呢,还有咱们这个,哎,In method,我们生命周期注解,比说那两个注解标注的初始化方法,它都得找到了,如果找到以后呢,我们来看。
05:45
诶,他呢,就来执行,哎,执行我们这个注解,这个注解当前标的是哪个方法呢?哎,我们来看一看,在这个in里边,它来执行我们这个初始化方法,怎么执行呢?我们来看下一步,诶这个element他们找到我们这个初始化注解,哎,我们就是最终定义到我们这个方法,它就来利用反射调用这个方法,所以说呢,这就是这些铸解为什么会工作,就是我们这个并用post processor帮我们进行处理了。
06:18
来们来把它放心好放心,那么呢,接下来我们还有其他的being post processor,我们也可以都看一看,比如这有一个叫o wear,也就是说处理我们后来,哎,我们用的o wear注解,我们为什么能自动装配进来值呢?哎,就是这个b post processor在对象创建完以后,处理owa注解标注的所有属性来进行注值等等等等,也就是一句话,我们s spring底层呢,不管是并复职。我们的副值还是呢,咱们这个注入啊,其他的咱们这个组件,包括呢啊,咱们这个O自动注入等等O还有咱们之前看过的生命周期注解功能,以及咱们这个以及这个安。
07:14
咱们有一个注解,这是异步方法等等等等,像这些功能等等等等,都是用我们这个post process来完成的,就这是spring底层对它的使用,那么大家学到后来的一些功能的时候啊,我们就给这些组件里边标了其他注解,或者在这写owa啦啊或者呢,我们呃用了其他功能啦,们都可以去来看一下有没有对应的post processor进行处理。
我来说两句