昆明java培训
达内昆明广州春城路

18487146383

热门课程

使用CGLib实现

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

昆明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培训】

上java培训有用吗?怎么衡量?【达内培训】

昆明java培训机构怎么选?昆明达内java培训怎么样?

学Java自学还是达内培训机构好?

选择城市和中心
贵州省

广西省

海南省

台湾