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

cgLib生成动态代理

时间:2015-04-05 20:17:35      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

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问题;

cgLib生成动态代理

标签:

原文地址:http://www.cnblogs.com/stono/p/4394524.html

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