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();
    }
}

 

posted @ 2019-10-26 23:18  konge!  阅读(127)  评论(0编辑  收藏  举报