zoukankan      html  css  js  c++  java
  • SSM-Spring-10:Spring中cglib动态代理

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

    何为动态代理,就不扯皮了,上一篇博客刚刚提到,那cglib动态代理又怎么写,我拿个和上个例子相似的案例来写

    具体案例:

      一个SomeServiceImpl接口

    package cn.dawn.day10cglibdtproxy;
    
    
    /**
     * Created by Dawn on 2018/3/8.
     */
    public class SomeServiceImpl {
        public void doSome() {
            System.out.println("do something");
        }
    }

      一个测试类,我直接在测试类中使用cglib动态代理

    package cn.dawn.day10cglibdtproxy;
    
    
    import org.springframework.cglib.proxy.Enhancer;
    import org.springframework.cglib.proxy.MethodInterceptor;
    import org.springframework.cglib.proxy.MethodProxy;
    
    import java.lang.reflect.Method;
    
    /**
     * Created by Dawn on 2018/3/8.
     */
    public class Test {
        public static void main(String[] args) {
            //模板
            final SomeServiceImpl service=new SomeServiceImpl();
            //cglib动态代理
            Enhancer enhancer=new Enhancer();
            //设置模板
            enhancer.setSuperclass(service.getClass());
            //回调函数
            enhancer.setCallback(new MethodInterceptor() {
                public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                    System.out.println("前置增强内容---------------");
                    methodProxy.invoke(service,objects);
                    return null;
                }
            });
            //创建代理对象
            SomeServiceImpl proxy = (SomeServiceImpl)enhancer.create();
            //代理对象调用原方法
            proxy.doSome();
    
        }
    }

        他的写法就如上所示,需要以上的注释所标明的步骤

        值得一提的是MethodProxy这个东西,他见过吗?他类似Method都是对此类的方法的反射,但是前者是Spring在高版本后出现的,他的写法优良,更具性能

  • 相关阅读:
    HDU 5154 Harry and Magical Computer bfs
    opencv第一课 打开一个图片
    Codeforces Round #131 (Div. 1) A
    Topcoder SRM 643 Div1 250<peter_pan>
    bestcoder#23 1002 Sequence II 树状数组+DP
    bestcoder#23 1001 Sequence
    Oil Deposits 搜索 bfs 强联通
    迷宫问题 模拟队列 广度优先搜索
    Codeforces Round #283 (Div. 2) C. Removing Columns 暴力
    Codeforces Round #283 (Div. 2) B. Secret Combination 暴力水题
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/8530823.html
Copyright © 2011-2022 走看看