java 动态代理
2016-11-30 15:25
302 查看
java 动态代理
主要用来做方法的增强,让你可以在不修改源码的情况下,增强一些方法,在方法执行前后做任何你想做的事情(甚至根本不去执行这个方法),因为在InvocationHandler的invoke方法中,你可以直接获取正在调用方法对应的Method对象,具体应用的话,比如可以添加调用日志,做事务控制等。
还有一个有趣的作用是可以用作远程调用,比如现在有Java接口,这个接口的实现部署在其它服务器上,在编写客户端代码的时候,没办法直接调用接口方法,因为接口是不能直接生成对象的,这个时候就可以考虑代理模式(动态代理)了,通过Proxy.newProxyInstance代理一个该接口对应的InvocationHandler对象,然后在InvocationHandler的invoke方法内封装通讯细节就可以了。具体的应用,最经典的当然是Java标准库的RMI,其它比如hessian,各种webservice框架中的远程调用,大致都是这么实现的。
主要用来做方法的增强,让你可以在不修改源码的情况下,增强一些方法,在方法执行前后做任何你想做的事情(甚至根本不去执行这个方法),因为在InvocationHandler的invoke方法中,你可以直接获取正在调用方法对应的Method对象,具体应用的话,比如可以添加调用日志,做事务控制等。
还有一个有趣的作用是可以用作远程调用,比如现在有Java接口,这个接口的实现部署在其它服务器上,在编写客户端代码的时候,没办法直接调用接口方法,因为接口是不能直接生成对象的,这个时候就可以考虑代理模式(动态代理)了,通过Proxy.newProxyInstance代理一个该接口对应的InvocationHandler对象,然后在InvocationHandler的invoke方法内封装通讯细节就可以了。具体的应用,最经典的当然是Java标准库的RMI,其它比如hessian,各种webservice框架中的远程调用,大致都是这么实现的。
相关文章推荐
- Java深度历险(七)——Java反射与动态代理
- [转]Java 静态代理和动态代理
- java 动态代理
- Java中的代理模式----静态代理和动态代理
- [Java] 动态代理 小小总结
- java静态代理和动态代理
- 黑马程序员java高新技术篇----动态代理
- java 动态代理
- Java静态代理、动态代理
- java 动态代理
- JAVA 中的 动态代理
- 用java调用编译器编译java文件-动态代理
- [Java] Java 动态代理
- java 动态代理
- Java 静态代理和动态代理
- java 动态代理
- Java 动态代理
- 黑马程序员_Java基础笔记 --动态代理
- [Java] 动态代理 小小总结
- java静态代理和动态代理