zoukankan      html  css  js  c++  java
  • cgLib生成动态代理

    package com.stono.cglib;
    
    import java.lang.reflect.Method;
    
    import net.sf.cglib.proxy.Enhancer;
    import net.sf.cglib.proxy.MethodInterceptor;
    import net.sf.cglib.proxy.MethodProxy;
    
    public class CglibProxy implements MethodInterceptor {
    
        private Enhancer enhance = new Enhancer();
    
        public Object getProxy(Class<?> clazz) {
            // 设置创建子类的类
            enhance.setSuperclass(clazz);
            enhance.setCallback(this);
            return enhance.create();
        }
    
        /**
         * 拦截所有目标类方法的调用<br>
         * obj 目标类的实例<br>
         * m 目标方法的反射对象 <br>
         * args 方法的参数 <br>
         * proxy 代理类的实例
         */
        @Override
        public Object intercept(Object obj, Method m, Object[] args,
                MethodProxy proxy) throws Throwable {
            System.out.println("before .....");
            // 代理类调用父类的方法
            Object invokeSuper = proxy.invokeSuper(obj, args);
            System.out.println("after ......");
            return invokeSuper;
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            CglibProxy proxy = new CglibProxy();
            Train t = (Train) proxy.getProxy(Train.class);
            t.move();
        }
    
    }
    
    /**
     * 被代理的类
     * 
     */
    class Train {
    
        public void move() {
            System.out.println("train is running!");
        }
    }

     cglib的jar包在网上找一下,不能找eclipse之类里面的,有security问题;

  • 相关阅读:
    HTML5的自定义属性的使用总结
    yaf
    tp5
    简单易懂的命名空间及use的使用
    惮道安装方法
    centOS 7 gitlab安装
    PHP html mysql js 乱码问题,UTF-8(乱码)
    免费CDN公共库——网站提速 静态资源库
    如何写好接口(php写app移动端接口示例)
    Fiddler
  • 原文地址:https://www.cnblogs.com/stono/p/4394524.html
Copyright © 2011-2022 走看看