cglib代理

Posted jflalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cglib代理相关的知识,希望对你有一定的参考价值。

         为了解决静态代理频繁编写代理功能缺点

         分类

         Cglib代理

         优点: 基于字节码,会生成一个真实对象的子类

      效率高

              不需要接口,非jdk功能,需要导入额外cglib.jar 和

           Asm.jar(字节码解析包)

           缺点在使用spirng aop的时候出现Proxy和真实对象转换异常

写spring配置文件配置这里的时候

    <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

    false 为jdk代理

创建一个真实类

  

public class LaoZhong {
    public void xiaomubiao() {
        System.out.println("小目标");
    }
}
  

创建一个类(注意导入的包)实现 接口 :  MethodInterceptor

      

public class mishu3 implements MethodInterceptor{

    @Override
    public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable {
        System.out.println("before");
         //invoke()调用子类重写的方法
        Object result = arg3.invokeSuper(arg0, arg2);
        System.out.println("after");
        return result;

    
    }
}

编写测试类

    

public class visitor {
    public static void main(String[] args) {
            Enhancer  en=new Enhancer();
            en.setSuperclass(LaoZhong.class);
            en.setCallback(new  mishu3());
            LaoZhong create = (LaoZhong) en.create();
            create.xiaomubiao();
    }
}

 

以上是关于cglib代理的主要内容,如果未能解决你的问题,请参考以下文章

CGlib代理技术

AOP动态代理之CGLIB代理

Spring中的cglib动态代理

cglib动态代理

JDK动态代理和 CGLIB 代理

动态代理之 CGLIB 动态代理