您现在的位置是:首页 > 文章详情

2.3.3 CGLIB动态代理 -《SSM深入解析与项目实战》

日期:2020-08-19点击:506

2.3.3  CGLIB动态代理

前面介绍了JDK的动态代理,从一些实例也可以看到,JDK动态代理是依赖于实现的接口的。而CGLIB弥补了这个缺点,让我们在不需要实现接口的情况下,也可以实现动态代理。JDK动态代理和CGLIB动态代理在Spring实现AOP中都是使用到的技术,Spring AOP默认是使用JDK动态代理来代理接口的,但是可以进行强制使用CGLIB动态代理。

CGLIB内部使用了ASM(Java字节码操控框架)来进行转换字节码。可以代理没有接口类的类。所以相比较JDK动态代理来说,灵活一些,更值得称赞的地方是,由于CGLIB第通过字节码产生子类进行覆盖委托类的非final方法进行代理,而JDK动态代理使用Java类反射进行代理,所以CGLIB动态代理比JDK动态代理更快。注意,CGLIB不能对final和私有方法进行代理。

实例演示。首先创建一个委托类(目标类)。

代码清单2-25:AliPay目标类

public class AliPay {     public void pay(String operation) {         System.out.println("进行AliPay支付,操作:" + operation);     } }

可以看到,在这里我们不再实现Pay接口了。

接下来我们需要引入一个依赖。在pom.xml文件中增加如下代码。不使用该包下的,使用org.springframework.cglib.proxy下的MethodInterceptor 类也是可以的。

代码清单2-26:pom.xml文件增加如下代码

<dependencies>     <dependency>         <groupId>cglib</groupId>         <artifactId>cglib</artifactId>         <version>3.1</version>     </dependency> </dependencies>

接下来就是直接写CGLIB的代理类。


更多内容请阅读原文:
https://chenhx.blog.csdn.net/article/details/108027551

原文链接:https://yq.aliyun.com/articles/770757
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章