JDK动态代理

  1. 只能代理实现了接口的类

  2. 没有实现接口的类不能实现JDK的动态代理

CGLIB动态代理

  1. 针对类来实现代理的

  2. 对指定目标类产生一个子类,通过方法拦击技术拦截所有父类方法的调用

使用Cglib实现动态代理


package com.imooc.cglib;
public class Train {public void move(){System.out.println("火车行驶中");}
}

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 enhancer = new Enhancer();public Object getProxy(Class clazz){//设置创建子类的类enhancer.setSuperclass(clazz);enhancer.setCallback(this);return enhancer.create();}/** 拦截所有目标类方法的调用* obj:目标类的实例* m:目标方法的反射对象* args:方法的参数* proxy:代理类的实例* * (non-Javadoc)* @see net.sf.cglib.proxy.MethodInterceptor#intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], net.sf.cglib.proxy.MethodProxy)*/@Overridepublic Object intercept(Object obj, Method m, Object[] args,MethodProxy proxy) throws Throwable {// TODO Auto-generated method stubSystem.out.println("日志开始");//代理类调用父类的方法proxy.invokeSuper(obj, args);System.out.println("日志结束");return null;}

package com.imooc.cglib;
public class Client {public static void main(String[] args) {CglibProxy proxy = new CglibProxy();Train t = (Train)proxy.getProxy(Train.class);t.move();}
}

JDK动态代理与CGLIB动态代理区别相关推荐

  1. jdk动态代理和cglib动态代理实现及区别

    代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能. 代理模式又分为:静态代理.jdk动态代 ...

  2. 什么是代理模式?代理模式有什么用?通过一个小程序分析静态代理和动态代理。自己简单实现动态代理。JDK动态代理和CGLIB动态代理的区别。

    1. 代理模式有什么用 ①功能增强,在实现目标功能的基础上,又增加了额外功能.就像生活中的中介一样,他跟两边客户会有私下的交流. ②控制访问,代理不让用户直接和目标接触.就像中间商一样,他们不会让我们 ...

  3. Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别

    视频功能审核通过了,可以看视频啦!记得点关注啊~ 注意:因为网络原因,视频前一两分钟可能会比较模糊,过一会儿就好了 记得点关注啊,视频里的wx二维码失效了,wx搜索:"聊5毛钱的java&q ...

  4. 利用代码分别实现jdk动态代理和cglib动态代理_面试之动态代理

    大家好!我是CSRobot,从今天开始,我将会发布一些技术文章,内容就是结合春招以来的面试所遇到的问题进行分享,首先会对知识点进行一个探讨和整理,在最后会给出一些面试题并作出解答,希望可以帮助到大家! ...

  5. JDK动态代理和CGLib动态代理简单演示

    JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例. 一.首先我们进行JDK动态代理的演示. 现在我们有一个简单的业务接口Saying,如下: package te ...

  6. JDK 动态代理与 CGLIB 动态代理,它俩真的不一样

    摘要:一文带你搞懂JDK 动态代理与 CGLIB 动态代理 本文分享自华为云社区<一文带你搞懂JDK 动态代理与 CGLIB 动态代理>,作者: Code皮皮虾 . 两者有何区别 1.Jd ...

  7. JAVA 进阶篇 动态代理 JDK动态代理和CGlib动态代理

    JDK动态代理和CGlib动态代理 JDK动态代理: 利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. CGlib动态代理: 利用ASM(开源的Java ...

  8. 静态代理,JDK动态代理,Cglib动态代理详解

    目录 一.代理模式 二.静态代理 三.动态代理 3.1 JDK动态代理 3.2 Cglib动态代理 四.两种动态代理区别 一.代理模式 代理模式(Proxy Pattern)是程序设计中的一种设计模式 ...

  9. 谁与争锋,JDK动态代理大战CGLib动态代理

    文章目录 一.前言 二.基本概念 三.JDK 和 CGLib动态代理区别 3.1 JDK动态代理具体实现原理 3.2 CGLib动态代理 3.3 两者对比 3.4 使用注意 四.JDK 和 CGLib ...

  10. AOP、ASPECT、Spring AOP、JDK动态代理、CGLib动态代理

    AOP.ASPECT.Spring AOP.JDK动态代理.CGLib动态代理 1 AOP介绍 1.1 基本定义 AOP(Aspect Oriented Programming)称为面向切面编程,它是 ...

最新文章

  1. js 浅拷贝直接赋值_js 深拷贝 vs 浅拷贝
  2. checked_delete问题: Beyond the C++ STL: an introduction to boostdeleter::do_it
  3. iOS沙盒路径的查看和使用
  4. android 高度百分比,如何在Android中进行百分比高度和宽度?
  5. Understand Google file system paper
  6. golang 将对象转换成string_Golang 匿名 struct 解码数据技巧
  7. 120多套各种类别微信小程序模板源码
  8. python算方差_Python求均值,方差,标准差的实例
  9. 对立志成为DBA的人的几点建议
  10. LaTex多张子图并排排列方法
  11. gzh模板消息内外网穿透问题
  12. python3.6安装tkinter_在SUSE SP3上安装新的python-3.6.4
  13. JSONObject遍历并替换部分json值
  14. 第二阶段--团队冲刺--第五天
  15. 什么是AppImage?
  16. 真赔麻了!!一个BUG和一个回帖直接赔了20万!
  17. c语言程序设计拉丁方阵结构图,C语言实例:拉丁方阵
  18. 细细品味Hadoop_Hadoop集群精华文档合集
  19. 错误 You've successfully authenticated, but Gitee.com does not provide she access.
  20. windows cmd curl 中文乱码

热门文章

  1. [MySQL]MySQL分区与传统的分库分表(精华)
  2. ngx_lua模块中的共享内存字典项API
  3. 第八章 流量复制/AB测试/协程
  4. CentOS crontab定时任务不执行的解决
  5. JavaScript函数节流和函数防抖
  6. 计算机安全原理与实践_《计算机图形学原理及实践》学习笔记之第三章
  7. 两种方法实现在HTML页面加载完毕后运行某个js
  8. 多层陶瓷电容器用处_【科普】片状多层陶瓷电容器的封装方法,你了解吗?
  9. oracle dump 文件解析,oracle 事件转储udump文件
  10. 赛码输入输出java_赛码网-计算器的新功能(Java实现)