课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 使用CGLib实现
  • 使用CGLib实现

    发布:昆明Java培训      来源:达内新闻      时间:2016-08-31

  • 昆明Java培训机构的老师给同学们讲使用CGLib实现:

    创建一个类实现MethodInterceptor接口,重写intercept方法:当代理对象的方法被调用时会调用该方法!!

    CGlibProxyFactory类:

    1 package com.dwr.spring.proxy;

    2

    3 import org.springframework.cglib.proxy.Enhancer;

    4 import org.springframework.cglib.proxy.MethodInterceptor;

    5 import org.springframework.cglib.proxy.MethodProxy;

    6

    7 import java.lang.reflect.Method;

    8

    9 public class CGlibProxyFactory implements MethodInterceptor {

    10

    11    private Object targetObject;

    12

    13    public Object newProxy(Object targetObject){

    14        this.targetObject = targetObject;

    15        Enhancer enhancer = new Enhancer();

    16        enhancer.setSuperclass(this.targetObject.getClass());

    17        enhancer.setCallback(this);

    18        //返回代理对象

    19        return enhancer.create();

    20    }

    21

    22    public void checkSecurity(){

    23        System.out.println("--------UserManagerImpl.checkSecurity()----------");

    24    }

    25

    26    /**

    27     * @param proxy    带来的对象本身

    28     * @param method   被拦截到的方法

    29     * @param objects  方法的参数

    30     * @param methodProxy  方法的代理对象

    31     */

    32    @Override

    33    public Object intercept(Object proxy, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

    34        checkSecurity();

    35        Object ret = null;

    36

    37        try {

    38            ret = method.invoke(this.targetObject, objects);

    39        } catch (Exception e){

    40            e.printStackTrace();

    41        }

    42        return ret;

    43    }

    44 }

    测试:

    1 package com.dwr.spring.proxy;

    2

    3 public class CGlibProxyTest {

    4

    5    public static void main(String[] args){

    6        CGlibProxyFactory factory = new CGlibProxyFactory();

    7        UserManagerImpl userManager = (UserManagerImpl) factory.newProxy(new UserManagerImpl());

    8        userManager.addUser("Tom","123456");

    9    }

    10 }

    结果:

    --------UserManagerImpl.checkSecurity()----------

    --------UserManagerImpl.addUser()----------

    学Java开发就到昆明达内Java培训班!了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:客户端

下一篇:公共属性的配置

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56