Java代理系列-动态代理
2019独角兽企业重金招聘Python工程师标准>>>
动态代理可以做什么?比如说spring的AOP,它就是以动态代理为基础实现的,AOP拦截需要的请求,然后通过代理把请求的结果返回到AOP代理类中,在代理类里就可以做很多自己想要做的事情,比如日志记录,请求参数记录等
首先动态代理需要三个实现类,一个测试类
接口HelloInterface
接口实现类HelloInterfaceImpl
动态代理类HelloDynamicProxy
测试类HelloTest
代码具体实现
HelloInterface
/*** Created by liuhj on 2015/12/28.*/
public interface HelloInterface {public void say();
}
HelloInterfaceImpl
/*** Created by liuhj on 2015/12/28.*/
public class HelloInterfaceImpl implements HelloInterface {@Overridepublic void say() {System.out.println("Hello");}
}
HelloDynamicProxy
要实现InvocationHandler接口
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; public class HelloDynamicProxy implements InvocationHandler{private Object target; /** * @param target * @return */ public Object bind(Object target) { this.target = target; return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } @Override /** * */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result=null; System.out.println("BEGIN"); result=method.invoke(target, args); System.out.println("END"); return result; }
}
HelloTest
public class TestProxy { public static void main(String[] args) { HelloDynamicProxy proxy = new HelloDynamicProxy(); HelloInterface helloProxy = (HelloInterface) proxy.bind(new HelloInterfaceImpl()); helloProxy.say(); } }
输出结果
BEGIN
Hello
END
到此结束了
动态代理和静态代理的区别就是代理中,静态代理是以组合的方式注入到代理类,动态代理则是以反射机制注入到代理类。
才疏学浅,如有错误敬请指出,谢谢。
转载于:https://my.oschina.net/u/2519530/blog/552184
Java代理系列-动态代理相关推荐
- Java基础:动态代理
系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,动态创建一组指定的接口的实现类对象(代理对象)! 代理是实现AOP(面向切面编程)的核 ...
- 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
文章目录 Java的静态代理 静态代理的优缺点 ABAP的静态代理 Spring AOP的动态代理 JDK动态代理的优缺点 CGLIB动态代理的优缺点 ABAP CGLIB的模拟实现 ABAP Pre ...
- java静态代理与动态代理
2019独角兽企业重金招聘Python工程师标准>>> 代理模式是java常见的设计模式.其目的是为其他对象提供一个代理以控制对某个真实对象的访问.通过代理类这一中间层,有效控制对真 ...
- 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理
这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...
- Java、Android静态代理与动态代理
代理 (1) 什么是代理? 大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用.具体上讲,代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法.这个就好比 商户----&g ...
- Java设计模式学习06——静态代理与动态代理(转)
原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...
- java静态代理与动态代理简单分析
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5860749.html 1.动态代理(Dynamic Proxy) 代理分为静态代理和动态代理 ...
- 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )
文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...
- 吃透Java中的动态代理
动态代理在Java中是很重要的一部分,在很多框架中都会用到,如Spring中的AOP.Hadoop中的RPC等.为此在这把我对Java中的动态代理的理解分享给大家,同时写了一个模拟AOP编程的实例.( ...
最新文章
- Java 学习(1) ---JDK安装和配置环境变量
- python功能分享_Python中非常实用的一些功能和函数分享
- AntiSamy测试
- 不断进化的分支和需求管理
- 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
- hash hashcode变化_Web安全 | 没想到 Hash 冲突还能这么玩,你的服务中招了吗?
- 创建WPF单实例应用程序
- 好程序员web前端分享逻辑运算
- 构建之法 前三章读后感
- 拖拽实例 对于设置监听setInterval 的理解
- Linux基金会宣布行业进一步支持Akraino Edge Stack
- Android 10.0 PackageManagerService(四)APK安装流程-[Android取经之路]
- android 谷歌地图_Google天空地图可将您的Android手机变成数码望远镜
- win10联想软件商店壁纸的保存目录在哪
- 索爱E50收款蓝牙音箱,支持各种场合的商用收账音箱
- CityMaker学习教程02 软件的授权
- MCTP协议和NCSI
- 台达PLC ES系列与英威腾GD变频器通讯程序原创可直接用于生产的程序
- 要想成为一个成功人士最应该关注的东西
- ssm+jsp计算机毕业设计基于java的信访管理系统64esx(程序+lw+源码+远程部署).
热门文章
- JBoss关闭时报Failed to authenticate principal=null,...
- eslint vscode 自动格式化_Vue 入门系列第二期,开发环境与 ESLint 配置
- anki 插入表格_另一种把思维导图和excel表格放入anki的方式
- Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”
- 我们学习效率为什么这么低?CMU和PITT的科学家利用BCI技术对此做了相关研究
- 实时检测神经振荡可实现行为相关的神经反馈
- seaborn系列 (12) | 增强箱图boxenplot()
- 三星玄龙MR头显评测:将成 Vive Pro 最大竞争对手?
- UE4蓝图中的AI行为树功能使用经验指南
- 把宝可梦搬到终端后,摸鱼也不会被老板发现了,收集对战玩法一应俱全|开源...