与JDK动态代理相比,使用CGLIB动态代理不需要使用代理的类提供接口
大部分说明在提供的代码里边方便观察
而CGBLIB是第三方的包 使用时需要导入相关的jar包如下
asm-2.2.3,
asm-commons-2.2.3,
asm-util-2.2.3,
cglib-nodep-2.1_3
我刚开始导入的是cglib-3.2.9的jar包 会出现Enhancer创建失败 点到上面的类里面发现实现类的大部分包是没有的 所以cglib依赖以上jar包
CglibProxyProduce 类
import net.sf.cglib.proxy.Enhancer;
public class CglibProxyProduce {
private CglibProxy cglibProxy = new CglibProxy();//需要创建实例
public Object getProxy(Class cls) {
//Enhancer是cglib里面的强化类 这里实例化以调用方法
Enhancer enhancer = new Enhancer();
//设置其超类
enhancer.setSuperclass(cls);
//设置其逻辑代理对象为CglibProxy的实例 注意设置的对象需要实现MethodInterceptor接口
// 接口需要实现intercept方法
// 这里也可以传this值让此类实现MethodInterceptor方法
enhancer.setCallback(cglibProxy);