00:00
OK,来,那么接下来呢,我们就呃,基于我们刚才说的JDK的动态代理来去写一个,我们现在啊,就是写一个这个日志代理吧,然后呢,帮我们去完成一下我们刚刚提出的这个需求,并且呢,要解决这些问题,OK,那么我们就直接啊进入到我们这个开发工具里面来去说了啊啊,接下来呢,我要去写上一个类,大家注意了啊,我们写到这个before里面,在这个里面呢,我去用上一个class啊,这个class是干嘛的呢?就是专门用来生成代理对象的一个类啊,那我们就叫成什么呀,就叫做诶magic啊。Calc,然后呢吧,能看到吧,哎叫做这个啊好,首先呢,要给大家解释,这个是代理对象吗?是代理类吗。啊,你现在看到的这个东西是代理类吗?不是哈,它是干嘛的呀?啊是什么呀,生成我们的代理对象的啊,通过这个类来帮我们去生成这个代理对象的,能理解吧,它可不是我们的代理对象啊,它可不是代理对象啊,那么现在我们要给大家去解释的是啊,我们现在呢,要去使用JDK的动态代理,那么我们就要先去,哎,说一下在JDK的动态代理里面我们需要关注的,哎,两个什么呀?啊,应该是啊,一个类一个接口啊,哪个类呢?第一个我们叫做pro,这个类能明白吧?好,第二个呢,是一个接口,我们叫做invo handle,哎,这个接口好,我们首先呢,需要把这两个给大家去解释一下,这个pro大家注意。
01:46
它是干嘛的呀?啊,它是什么?是所有动态代理类的负类,明白吧,负类专门用于生成代理类或者是代理对象的,这就是我们pro它的这个功能。
02:11
能理解什么意思吧,它是所有动态代理类的负类,然后呢,专门用于生成动态代理类,然后呢,生成我们的代理对象。啊,其实这两个说的是一个意思,有了代理类以后,那代理对象那不是很好很好办的嘛,类都有了,那我创建个对象,那不就是一个代理对象了吗?对吧?OK,那么在这个process里面呢,它帮我们提供了这么两个方法啊来我把这个方法也给大家拿出来,首先我们进入到这个process里面啊,我们进入到Java,点烂点reflect,就是我们的反射里面提供好的pro啊来点进去注意哈,你一定要找到对应的,我们找的是谁啊,是JDK反射这个包里面的pro,理解吧,因为这个pro其实你看一下你点的时候你发现这么多的。
03:00
看到没有,哎,这么多呢,有什么java.net的,有什么SPA里面,你看它是不是帮你提供了这个process啊,我们不是用的,它用的是JDK的这个啊,一定要点对了啊,过来过来以后呢,在这里面我们看谁呢?大家注意哈,来把这个afterline给它打开,找谁呢?找其中的方法。呃,一个方法呢,我们叫做get pro class,就是来获取一个动态代理类的啊,我把这个方法来找到它,就是它能看到吧,Get class OK,把它拷贝出去,CTRLC来拷贝到这个地方。好就放到这,然后呢,再一个方法呢,是谁呢?我们来看哈,OK,在这个位置还是找到我们这个aline啊,它叫做什么呀,叫做new process instance,看到了吧,哎,是它啊,New process instance来把它给拷贝出来,这两个方法是我们要重点去关心的,那么上面的这个方法是干嘛的呢?注意它是专门用于好就写到这了啊好,它是用什么用于生成我们的。
04:13
哎,用A好,用于生成我们的代理类。啊,代理类的什么呀,代理类的class对象大家能明白吗?什么叫做代理类的class对象啊?首先这个代理类它是不是一个类啊,也是个类吧,对吧,它本身就是一个类啊,能明白吧,就是一个类,只不过呢,它是属于代理的范畴,所以把它叫成了代理类,那么你既然是一个类,将来我去用的话,我首先我是不是要经过一个类加载的过程啊,那么类加载加载进来以后,在我的JVM虚拟机中,它表现的是不是就是一个大写的class对象。
05:01
这个能明白吗?类加载应该都给大家讲过吧,一个类加载到内存中以后,是不是就是一个class对象啊,能明白吧,所以说呢,这个方法呢,就是帮我们返回什么呀,返回代理类的那个,可class对象听明白了吗?OK,好,下面这个方法呢,那就是什么直接用于什么呀?好,不能写到这啊,写到下面来用于谁呀?用于好生成我们的代理对象,就上面的是直接给你返回一个class对象,而下面呢,我最终直接就给你返回一个代理对象,什么样的代理对象呢?就是class对象的一个具体实例,是不是一个代理对象了,能明白这个意思吧?OK,所以说这个反射里面的东西啊,大家一定要能把它区分清楚了,好,这是我们这个pro啊,它这个类里面我们需要注意的东西,那么接下来呢,我们一会儿呢,就会用到其中的一个啊,其实用这两个里面的哪一个都行啊,我们一会儿呢,用其中的一个来去给大。
06:01
讲下一个,说一下这个引文,可以说handle德,它是干嘛的呢?它是来用于什么呀,完成动态代理的整个过程,就是你这个动态代理,你要干什么事呢?哎,你说做什么事呢?你都在这个invoc handler里面去写,你整个动态代理的过程呢,都在这里面去编写,但是我们能看到这个家伙,它是一个什么呀,接口能看到吧,好,那么我们就注意,你要用它的话呢,你还不能直接用,你是不是得去。实在这个接口啊,对吧,好,那来看一下啊,CTRLT一下。啊,东西倒是挺多的,那你说我用谁啊。啊,你看这么多呢,用谁呀。文化说你谁都不用,我们自己写。明白吧,谁都不用啊,你不要去找他的具体的实现,我们用谁呢?我们自己来写,那怎么写呢?你是一个借口,那我自己写个类实现米不就行了吗?对不对啊,但是我要强调的是什么呢?在引我handle里面有一个特别特别重要的方法,叫做in work方法,哎,引work方法能看到吧,哎,叫做引work方法,那么这个引work方法是干嘛的呢?
07:17
干嘛的呀,注意这个引work方法就是我们哎动态代理整个过程的一个编写,就在这个方法里面去写,你状态来临想做什么事,那么你就写到这个方法里面就行了,听明白这个意思了吧,哎,就往它里面去写,那么也就是通过也问和方法来去完成我们整个的动态代理的。啊,但是呢,注意了哈,我刚才听到有同学说,诶,这应该是反射里面的那个引问和方法啊,是不是啊,是不是啊,不是,可能有同学想的是什么呀,你反射里面不是有一个这个麦的对象吗?麦里面不是有个引方法吗?你觉得是这个东西吗?不是啊,听懂了吧,名字一样而已啊不是这个方法啊,这个一定要区分清楚了,好了,那么这个是我们JDK的动态代理,然后呢,我们需要关心的一个是类,一个是我们的接口,在类中的话呢,我们关心这两个方法,在这个接口中呢,我们关心的是这个方法,好,首先把这些呢给大家介绍一下,那么接下来我们就可以来去真正的去写出一个动态代理,然后呢,拿到我们的代理对象,最终呢,诶,可以完成我们具体的一个功能啊。
我来说两句