在 玩转JAVA代理模式 一文中,我们介绍了代理模式的基本概念 和 使用 jdk 实现步骤。这一篇文章我将带大家来使用 cglib 实现动态代理。
cglib 是第三方提供的包,所以需要引入jar包坐标:Project Structure…->Libraries->+For Maven->输入:cglib:cglib:3.2.2下载结束后可以使用

出现警告是因为版本过高,使用cglib:cglib:2.2.2或以下即可。
我们都知道,使用 jdk 实现动态代理的时候我们是有条件的,那就是这个代理目标得有接口。 然而,cglib 就很好的解决了这个问题,它可以代理没有接口的类,这样就弥补了 JDK 的不足。
代码演示
张三 类
媒婆代理 类
测试 类
效果展示
从上面的代码中我们可以看到,cglib 的代理并不需要接口。
原理对比
jdk代理:需要接口,是对接口的继承,这就导致了代理对象只能调用接口中存在的方法。
cglib代理:给一个类 Class 即可,是对类的继承,继承其所有方法来产生子类,好处就是代理对象能够调用这个 Class 的所有方法。