Java中动态代理是什么意思

Java中动态代理是什么意思,第1张

举个例子吧,比如说你暗恋一个小美女,你给她写了个情书,你不好意思直接给她,就让我转给她。

我也暗恋这个小美女,我收到你的情书以后,我送你的情书之前跟小美女说你这个人人品差长得丑还没钱,然后再把你的情书给她。

动态代理就是这个过程。本来是你和小美女之间的关系,但中间让我转达一下,我在转达的前后可以干一些自己的事情。更具体的说,就是A调用B,但不直接调用,A通过调用C,C再调用B,C在调用B的前后可以做一些自己的事情,比如说打日志、权限验证等,这样就把业务代码与系统代码分开,同时减少了A和B之间的耦合。

动态代理的经典应用是Spring AOP。有兴趣可以学学。

import java.lang.reflect.Proxy

A. 创建一个实现接口InvocationHandler的类,他必须实现invoke方法

B. 创建被代理的类以及接口。

C. 通过Proxy的静态方法newProxyInstance(ClassLoader loader,Class【】interfaces,InvocationHandler handler)创建一个代理

D. 通过代理调用方法。

java动态代理:是在运行是生成的class对象,在生成时必须提供一组或一个interface给它,然后该class就宣称它实现了这些interface。你当然可以把该class的实例当做这些interface中的任何一个来用,当然,这个DynamicProxy其实就是一个Proxy,他不会替你做实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。因此,DynamicProxy必须实现InvocationHandler接口。

5) 一个动态代理了和一个InvocationHandler 实现关联的。每一个动态代理实例的调用都要通过InvocationHandler接口的handler(调用处理器)来调用,动态代理不做任何执行操作,只是在创建动态代理时,把要实现的接口和handler关联,动态代理要帮助被代理执行的任务,要转交给handler来执行。其实就是调用invoke方法。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/29614.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-18
下一篇2023-02-18

发表评论

登录后才能评论

评论列表(0条)

    保存