首先,这篇文章并不详细介绍,只是记录自己练习的代码实现。以后有空再补全。哈哈哈
一、基于JDK的动态代理(需要有接口才能使用)
利用拦截器(拦截器必须实现InvocationHanlder)加上反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
接下来show time,上代码实现。
1.1、先创建接口类(Father)
接口 Father1.2、再创建实现类(Son)
实现类 Son1.3、创建代理类(SonProxy)
代理类 SonProxy1.4、创建测试类(TestMethod)---开始测试
测试类 TestMethod1.5、结果
结果二、基于cglib的动态代理(无须接口)
需要引入cglib相关的包,我这里就不细说了。
cglib的实现是利用ASM开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
上代码了,show time 哈哈哈哈哈
2.1、先创建一个类(Engineer)
类 Engineer2.2、创建cglib的代理类(CglibProxy)
代理类 CglibProxy2.3、创建测试类(TestMethod) --开始测试
测试类 TestMethod2.4、结果
结果最后:留下个小疑问,用cglib的方法能不能调用前面的实现类Son来达到动态代理呢?
网友评论