一、首先说一下JDK中的动态代理:
JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的
但是,JDK中所要进行动态代理的类必须要实现一个接口,也就是说只能对该类所实现接口中定义的方法进行代理,这在实际编程中具有一定的局限性,而且使用反射的效率也并不是很高。
二、使用CGLib实现:
使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,比使用Java反射效率要高。唯一需要注意的是,CGLib不能对声明为final的方法进行代理,因为CGLib原理是动态生成被代理类的子类。
下面,将通过一个实例介绍使用CGLib实现动态代理。
1、被代理类:
首先,定义一个类,该类没有实现任何接口,包含两个方法。
public class ConcreteClassNoInterface { public String getConcreteMethodA(String str){ System.out.println("ConcreteMethod A ... "+str); return str; } public int getConcreteMethodB(int n){ System.out.println("ConcreteMethod B ... "+n); return n+10; } }
名称栏目:JavaCGLib动态代理机制(全面解析)-创新互联
链接分享:https://www.cdcxhl.com/article24/hodce.html
成都网站建设公司_创新互联,为您提供网站导航、品牌网站建设、外贸网站建设、营销型网站建设、云服务器、小程序开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联