JDK动态代理与CGLIB动态代理区别
JDK动态代理
只能代理实现了接口的类
没有实现接口的类不能实现JDK的动态代理
CGLIB动态代理
针对类来实现代理的
对指定目标类产生一个子类,通过方法拦击技术拦截所有父类方法的调用
使用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动态代理区别相关推荐
- jdk动态代理和cglib动态代理实现及区别
代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能. 代理模式又分为:静态代理.jdk动态代 ...
- 什么是代理模式?代理模式有什么用?通过一个小程序分析静态代理和动态代理。自己简单实现动态代理。JDK动态代理和CGLIB动态代理的区别。
1. 代理模式有什么用 ①功能增强,在实现目标功能的基础上,又增加了额外功能.就像生活中的中介一样,他跟两边客户会有私下的交流. ②控制访问,代理不让用户直接和目标接触.就像中间商一样,他们不会让我们 ...
- Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别
视频功能审核通过了,可以看视频啦!记得点关注啊~ 注意:因为网络原因,视频前一两分钟可能会比较模糊,过一会儿就好了 记得点关注啊,视频里的wx二维码失效了,wx搜索:"聊5毛钱的java&q ...
- 利用代码分别实现jdk动态代理和cglib动态代理_面试之动态代理
大家好!我是CSRobot,从今天开始,我将会发布一些技术文章,内容就是结合春招以来的面试所遇到的问题进行分享,首先会对知识点进行一个探讨和整理,在最后会给出一些面试题并作出解答,希望可以帮助到大家! ...
- JDK动态代理和CGLib动态代理简单演示
JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例. 一.首先我们进行JDK动态代理的演示. 现在我们有一个简单的业务接口Saying,如下: package te ...
- JDK 动态代理与 CGLIB 动态代理,它俩真的不一样
摘要:一文带你搞懂JDK 动态代理与 CGLIB 动态代理 本文分享自华为云社区<一文带你搞懂JDK 动态代理与 CGLIB 动态代理>,作者: Code皮皮虾 . 两者有何区别 1.Jd ...
- JAVA 进阶篇 动态代理 JDK动态代理和CGlib动态代理
JDK动态代理和CGlib动态代理 JDK动态代理: 利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. CGlib动态代理: 利用ASM(开源的Java ...
- 静态代理,JDK动态代理,Cglib动态代理详解
目录 一.代理模式 二.静态代理 三.动态代理 3.1 JDK动态代理 3.2 Cglib动态代理 四.两种动态代理区别 一.代理模式 代理模式(Proxy Pattern)是程序设计中的一种设计模式 ...
- 谁与争锋,JDK动态代理大战CGLib动态代理
文章目录 一.前言 二.基本概念 三.JDK 和 CGLib动态代理区别 3.1 JDK动态代理具体实现原理 3.2 CGLib动态代理 3.3 两者对比 3.4 使用注意 四.JDK 和 CGLib ...
- AOP、ASPECT、Spring AOP、JDK动态代理、CGLib动态代理
AOP.ASPECT.Spring AOP.JDK动态代理.CGLib动态代理 1 AOP介绍 1.1 基本定义 AOP(Aspect Oriented Programming)称为面向切面编程,它是 ...
最新文章
- js 浅拷贝直接赋值_js 深拷贝 vs 浅拷贝
- checked_delete问题: Beyond the C++ STL: an introduction to boostdeleter::do_it
- iOS沙盒路径的查看和使用
- android 高度百分比,如何在Android中进行百分比高度和宽度?
- Understand Google file system paper
- golang 将对象转换成string_Golang 匿名 struct 解码数据技巧
- 120多套各种类别微信小程序模板源码
- python算方差_Python求均值,方差,标准差的实例
- 对立志成为DBA的人的几点建议
- LaTex多张子图并排排列方法
- gzh模板消息内外网穿透问题
- python3.6安装tkinter_在SUSE SP3上安装新的python-3.6.4
- JSONObject遍历并替换部分json值
- 第二阶段--团队冲刺--第五天
- 什么是AppImage?
- 真赔麻了!!一个BUG和一个回帖直接赔了20万!
- c语言程序设计拉丁方阵结构图,C语言实例:拉丁方阵
- 细细品味Hadoop_Hadoop集群精华文档合集
- 错误 You've successfully authenticated, but Gitee.com does not provide she access.
- windows cmd curl 中文乱码
热门文章
- [MySQL]MySQL分区与传统的分库分表(精华)
- ngx_lua模块中的共享内存字典项API
- 第八章 流量复制/AB测试/协程
- CentOS crontab定时任务不执行的解决
- JavaScript函数节流和函数防抖
- 计算机安全原理与实践_《计算机图形学原理及实践》学习笔记之第三章
- 两种方法实现在HTML页面加载完毕后运行某个js
- 多层陶瓷电容器用处_【科普】片状多层陶瓷电容器的封装方法,你了解吗?
- oracle dump 文件解析,oracle 事件转储udump文件
- 赛码输入输出java_赛码网-计算器的新功能(Java实现)