Java JDK和cgLib动态代理
发布日期:2021-06-27 04:25:04
浏览次数:10
分类:技术文章
本文共 1757 字,大约阅读时间需要 5 分钟。
JDK
public class JdkProxy implements InvocationHandler { //目标类 private Object targetObject; //获取代理对象 public Object newProxyInstance(Object targetObject){ this. targetObject = targetObject; //绑定关系,也就是和具体的哪个实现类关联 return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), targetObject.getClass().getInterfaces(),this); } public Object invoke(Object proxy, Method method, Object[] args) { Object result = null; try{ System.out.println("通过JDK动态代理调用 "+method.getName() +", 打印日志 begin"); result = method.invoke(targetObject,args); System.out.println("通过JDK动态代理调用 "+method.getName() +", 打印日志 end"); }catch (Exception e){ e.printStackTrace(); } return result; }}
cgLIB
public class CglibProxy implements MethodInterceptor { //目标类 private Object targetObject; //绑定关系 public Object newProxyInstance(Object targetObject){ this.targetObject = targetObject; Enhancer enhancer = new Enhancer(); //设置代理类的父类(目标类) enhancer.setSuperclass(this.targetObject.getClass()); //设置回调函数 enhancer.setCallback(this); //创建子类(代理对象) return enhancer.create(); } public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { Object result = null; try{ System.out.println("通过CGLIB动态代理调用 "+method.getName() +", 打印日志 begin"); result = methodProxy.invokeSuper(o,args); System.out.println("通过CGLIB动态代理调用 "+method.getName() +", 打印日志 begin"); }catch (Exception e){ e.printStackTrace(); } return result; }}
转载地址:https://blog.csdn.net/weixin_42166320/article/details/107472338 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月25日 08时24分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
L2-034 口罩发放 (25 分)
2019-04-26
L2-019 悄悄关注 (25 分)
2019-04-26
L1-020 帅到没朋友 (20 分)
2019-04-26
L1-046 整除光棍 (20 分)
2019-04-26
L2-021 点赞狂魔 (25 分)【优化后的】
2019-04-26
L2-032 彩虹瓶 (25 分)
2019-04-26
L2-004 这是二叉搜索树吗? (25 分)
2019-04-26
L2-011 玩转二叉树 (25 分)
2019-04-26
L2-006 树的遍历 (25 分)
2019-04-26
L3-010 是否完全二叉搜索树 (30 分)
2019-04-26
6-10 阶乘计算升级版 (20 分)
2019-04-26
7-78 阅览室 (20 分)
2019-04-26
7-21 查验身份证 (15 分)
2019-04-26
实验4-1-5 韩信点兵 (10 分)
2019-04-26
1016 部分A+B (15 分)
2019-04-26
1023 组个最小数 (20 分)
2019-04-26
1036 跟奥巴马一起编程 (15 分)
2019-04-26
1002 写出这个数 (20 分)
2019-04-26
1010 一元多项式求导 (25 分)
2019-04-26