zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    迭代器和生成器
    20.03.23作业
    装饰器
    集合
    元组类型
    字典类型
    列表类型
    字符串类型
    for循环
    深浅copy与while循环
  • 原文地址:https://www.cnblogs.com/jflalove/p/11746241.html
Copyright © 2011-2022 走看看