发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

高手能否能给初学者讲讲动态代理?

         
2004-07-03 20:21
赞助商链接

在论坛看到一些高级话题时往往会提及“动态代理”。本人对“动态代理”的概念理解不够深入,相信不少道友也有同感,能否能给出一些例子?
谢谢!

2004-07-09 18:14

动态代理的基本机制:在运行期间,(Byte Code Instrument)动态生成Byte Code,动态生成Java类。

我所知道的Class Byte Code操作工具实现有2种:

BCEL 按照DOM结构方式操作Byte Code。
http://jakarta.apache.org/bcel/index.html

ASM 按照SAX方式(Visitor模式)操作Byte Code。
http://asm.objectweb.org/

有了Byte Code操作工具,就可以在运行期间动态生成代理类了。
cglib就是这样一个动态代理类的生成工具。
http://cglib.sourceforge.net/

cglib能够生成多种丰富的动态代理类。

JDK1.4引入了动态代理类的简单实现(只提供一种代理类)。
包括java.lang.reflect包的Proxy类和InvocationHandler类这两个标准的API。操作Byte Code的具体类是sun.misc.ProxyGenerator类。

Sun JDK 源代码下载:
http://wwws.sun.com/software/communitysource/
先注册并登录到“Sun Community Source Licensing”,然后下载J2SE(几十兆)或者J2EE(几百兆)。

动态代理是实现AOP的一种流行的方法。
关于JDK1.4 Proxy的具体用法。这里不再赘述。下面有些中文文章。

Banq的文章。
http://www.jdon.com/AOPdesign/spring.htm

还有:
http://www-900.ibm.com/developerWorks/cn/java/l-connpoolproxy/index.shtml

AOP模式      Proxy代理模式     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com