暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手动代理---jdk动态代理

程序猿I小t 2019-02-20
348

上一篇介绍AOP的文章中,我们通过一张图了解AOP的底层原理.如图



在AOP框架的使用过程中,有一种框架使用模式叫手动代理----Jdk动态代理.它是通过接口+实现类的方式来实现的.所以今天我们就来玩一次jdk的动态代理.


首先根据图解,我们来分析一下需要哪些对象才能进行手动代理.


1.目标类(target):接口+实现类


2.切面类:用于存放通知MyAspect


3.工厂类:用来将目标类和切面类结合起来生成工厂代理对象


4.测试类:用来测试代码


目标类以及实现类




切面类:



工厂类




其中我们在生成代理对象的过程中会调用Proxy.newProxyInstance方法,它会返回给我们一个Object对象,我们需要将其转换成相应的类型.在newProxyInstance方法中有一些参数需要了解一下.



看到第三个参数h,这个参数代表处理类,是个接口,而且它需要采用匿名内部类的方式(没有类名),那么其底层有一个我们必须实现的方法叫invoke方法.如图




测试




最后运行测试代码




文章转载自程序猿I小t,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论