首页 > 其他 > 详细

SSM学习笔记(5)-CGLIB动态代理

时间:2020-04-30 23:11:34      阅读:66      评论:0      收藏:0      [点我收藏+]

问题:

1、CGLIB动态代理与JDK的对比

2、实现

 

解决:

1、CGLIB是适用于不需要接口的情况下,只需要个非抽象的类就可以实现动态代理。

 

 

2、CGLIB动态代理

 

技术分享图片
 1 public class CglibProxyExample implements MethodInterceptor{
 2     /**
 3     *生成CGLIB代理对象
 4     **/
 5     public Object getProxy(Class cls){
 6         //CGLIB enhancer 增强类对象
 7         Enhancer enhancer = new Enhancer();
 8         //设置增强类型
 9         enhancer.setSuperclass(cls);
10         //定义代理逻辑对象为当前对象,要求当前对象实现MethodInterceptor方法
11         enhancer.setCallback(this);//
12         //生成并返回代理对象
13         return enhancer.create();
14     }
15     
16     /**代理逻辑方法
17     *
18     */
19     //intercept(拦截)
20     public Object intercept(Object proxy, Method method,
21     Object[] args, MethodProxy methodProxy) throws Throwable{
22     System.err.println("调用真实对象前");
23     //CGLIB反射调用真实对象方法
24     Object result = methodProxy.invokeSuper(proxy, args);
25     System.err.println("调用真实对象后");
26     return result;
27     }
28 }
View Code

 

 

测试CGLIB动态代理

技术分享图片
1 public void textCGLIBProxy(){
2     CglibProxyExample cpe = new CglibProxyExample();
3     ReflectServiceImpl obj = (ReflectServiceImpl)cpe.getProxy(ReflectServiceImpl.class);
4     obj.sayHello("张三");
5 }
View Code

 

SSM学习笔记(5)-CGLIB动态代理

原文:https://www.cnblogs.com/quenvpengyou/p/12811469.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!