JDK动态代理小例子
一个小汽车,有一个跑run()的方法,我们想使用jdk动态代理使小汽车执行run之前 加点油,run之后洗车。
有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的代理) Test(测试类)
Car
public interface Car {public void run();}
Kayan这个是小汽车实现类
public class Kayan implements Car {@Overridepublic void run() {System.out.println("小汽车开始跑。。。。。。。。");}}
CarProxy 小汽车的代理类
public class CarProxy implements InvocationHandler {// 小汽车会被代理private Car car;// 通过set传入小汽车public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public Car creatCarProxy() {Car proxy = (Car) Proxy.newProxyInstance(car.getClass().getClassLoader(), car.getClass().getInterfaces(), this);return proxy;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if ("run".equals(method.getName())) {// 小汽车想要跑之前那要先加油啊System.out.println("给小汽车加油啊。。oil。。oil。。oil");Object object = method.invoke(car, args);System.out.println("跑完之后给小汽车擦车啊。。clean。。clean");return object;}return method.invoke(car, args);}}
测试代码
// 测试小汽车的代理 @Testpublic void testCarProxy() {Car ky = new Kayan();CarProxy proxy = new CarProxy();proxy.setCar(ky);Car carProxy = proxy.creatCarProxy();carProxy.run();}
最后的结果显示
这种实现的思想类似于Spring的Aop的实现思路,但是AOP在使用jdk动态代理的时候也是用CGLib代理 。
转载于:https://www.cnblogs.com/zhanghaoliang/p/6475636.html
JDK动态代理小例子相关推荐
- jdk动态代理与cglib动态代理例子
1.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 ...
- 面试造火箭系列,栽在了cglib和jdk动态代理
代理模式 关于代理模式,查阅比较专业的资料是这么定义的:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上 ...
- AOP、ASPECT、Spring AOP、JDK动态代理、CGLib动态代理
AOP.ASPECT.Spring AOP.JDK动态代理.CGLib动态代理 1 AOP介绍 1.1 基本定义 AOP(Aspect Oriented Programming)称为面向切面编程,它是 ...
- 接住喽????,送你个装逼的技能: JDK动态代理
今天讲一个比较深层的知识点:JDK动态代理,这是个可以让小白在大咖面前装逼的神器,顺便送你一个代理模式的温习机会. 代理模式场景 为了引出动态代理的用法,我们先看看代理设计模式,这能让你了解JDK动态 ...
- 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...
[原创]分布式之缓存击穿 什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询, ...
- JDK动态代理实现简单AOP--转
JDK 动态代理是 java 反射的一个重要特性.它在某种方面为 java 提供了动态性的特性,给应用带来了无限的空间.大名鼎鼎的 Hessian . Spring AOP 基于动态代理实现.本文将简 ...
- 【手写系列】纯手写实现JDK动态代理
前言 在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架.JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cglib对这一不足进行了有效补充.本 ...
最新文章
- 安装部署及升级到Exchange Server 2010
- Linux下samba服务速度很慢的问题
- web 小程序 ch3 小程序框架
- 社交网站将推动手游发展
- UILabel自适应高、宽
- .NET6之MiniAPI(三十):结束篇(附链接)
- python代做在哪找靠谱_比较靠谱的资产评估师考试去哪找
- 高能预警!这些段子已刷爆大学老师朋友圈
- linux 串口中断_1600字干货 | 大佬讲Linux启动流程(内含福利)
- python turtle绘制七段数码管日期时间(注释)
- KL与JS散度学习[转载]
- 几个跨平台移动App开发方案框架比较
- BitMap算法和Java的实现类BigSet
- 服务器代理跳过上网限制策略
- 【华为云技术分享】深度理解AI概念、算法及如何进行AI项目开发
- 七周成为数据分析师 | 数据库
- cs,ds,ss,es?即cs,ds,ss,es的区别
- 纯前端,js导出页面为pdf
- 中国研修网计算机培训心得,网络研修心得体会范文
- 麒麟kylin3安装字体