码迷,mamicode.com
首页 > 其他好文 > 详细

cglib代理

时间:2019-10-27 01:16:39      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:super   after   jar   call   静态   配置文件   ble   proxy   object   

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

         分类

         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代理

标签:super   after   jar   call   静态   配置文件   ble   proxy   object   

原文地址:https://www.cnblogs.com/jflalove/p/11746241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!