- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java动态代理实现
Java 动态代理实现 动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于 AOP 的框架)的设计与开发,本文将通过实例 来讲解 Java 动态代理的实现过程。 通常情况下,代理模式中的每一个代理类在编译之后都会生成一个 class 文件,代理类所实现的接口和所代理的方法都 被固定,这种代理被称之为静态代理(Static Proxy)。那么有没有一种机制能够让系统在运行时动态创建代理类 ?答案就是 本文将要介绍的动态代理(Dynamic Proxy)。动态代理是一种较为高级的代理模式,它在事务管理、AOP (Aspect-OrientedProgramming ,面向方面编程)等领域都发挥了重要的作用。 在传统的代理模式中,客户端通过 Proxy 类调用 RealSubject 类的 request()方法,同时还可以在代理类中封装其他方 法(如 preRequest()和 postRequest()等)。如果按照这种方法使用代理模式,那么代理类和真实主题类都应该是事先已经 存在的,代理类的接口和所代理方法都已明确指定,如果需要为不同的真实主题类提供代理类或者代理一个真实主题类中的 不同方法,都需要增加新的代理类,这将导致系统中的类个数急剧增加,因此需要想办法减少系统中类的个数。动态代理可 以让系统能够根据实际需要来动态创建代理类,让同一个代理类能够代理多个不同的真实主题类而且可以代理不同的方法。 从 JDK 1.3 开始,Java 语言提供了对动态代理的支持,Java 语言实现动态代理时需要用到位于java.lang.reflect 包中 的一些类,现简要说明如下: (1) Proxy 类 Proxy 类提供了用于创建动态代理类和实例对象的方法,它是所创建的动态代理类的父类 ,它最常用的方法如下: public static Class? getProxyClass(ClassLoader loader,Class?... interfaces) :该方法用于返回一个Class 类型的代理类,在参数中需要提供类加载器并需要指定代理的接口数组(与真实主题类的接口列表一致)。 public static Object newProxyInstance(ClassLoader loader, Class?[]interfaces, InvocationHandler h) :该 方法用于返回一个动态创建的代理类的实例,方法中第一个参数 loader 表示代理类的类加载器,第二个参数 interfaces 表示代理类所实现的接口列表(与真实主题类的接口列表一致),第三个参数 h 表示所指派的调用处理 程序类。 (2) InvocationHandler 接口 InvocationHandler 接口是代理处理程序类的实现接口,该接口作为代理实例的调用处理者的公共父类,每一个代理类 的实例都可以提供一个相关的具体调用处理者(InvocationHandler 接口的子类)。在该接口中声明了如下方法: public Object invoke(Objectproxy, Method method, Object[] args) :该方法用于处理对代理类实例的方法调用 并返回相应的结果,当一个代理实例中的业务方法被调用时将自动调用该方法。invoke()方法包含三个参数,其中 第一个参数 proxy 表示代理类的实例,第二个参数 method 表示需要代理的方法,第三个参数 args 表示代理方法 的参数数组。 动态代理类需要在运行时指定所代理真实主题类的接口,客户端在调用动态代理对象的方法时,调用请求会将请求自动 转发给 InvocationHandler 对象的 invoke()方法,由 invoke()方法来实现对请求的统一处理。 下面通过一个简单实例来学习如何使用动态代理模式: 1 / 5 Sunny 软件公司欲为公司 OA 系统数据访问层 DAO 增加方法调用日志,记录每一个方法被调用的时间和调用结果,现 使用动态代理进行设计和实现。 本实例完整代码如下所示: 1. import java.lang.reflect.Proxy; 2. import java.lang.
您可能关注的文档
- Hadoop2.6.0安装----环境准备.docx
- 2016年二建-市政公用工地进程管理与实务-冲刺班讲义.pdf
- Hadoop集群_第5期副刊_JDK和SSH无密码配置_V1.0.pdf
- Hadoop集群_第4期_SecureCRT使用_V1.0.pdf
- HDD+SSD(HDD)多硬盘系统启动问题.pdf
- Hadoop和大数据:60款顶级开源工具—hadoop大数据开源工具.pdf
- 2016年注册公用设备工地进程师(给排水专业)基础考试大纲.doc
- HG/T 20660(节选)常见的毒性程度为极度、高度危害、中毒危害的化学介质.doc
- HG 2—818—75.doc
- HG122329-LYH_中文版_.pdf
最近下载
- 玉米保护性耕作水肥一体种植技术规程.pdf VIP
- DB2203_T 6-2023 玉米秸杆覆盖条耕滴灌水肥一体化技术规程.pdf VIP
- J16J156 被动式低能起居住建筑节能构造.docx VIP
- 车辆租赁服务项目实施方案及保证措施.docx VIP
- ISO1940-1机械振动-恒定(刚性)状态下转子的平衡质量要求第1部分:平衡公差的规定和验证.pdf VIP
- J10J123 住宅厨房卫生间ZDA防火型排气道.docx VIP
- J12Z605 混凝土排水管道基础与接口.docx VIP
- J14J141 聚苯暖砖现浇混凝土填芯墙体构造.docx VIP
- J14J144 WG建筑刚性防水与混凝土抗震构造.docx VIP
- 肿瘤患者的饮食指导.ppt VIP
文档评论(0)