当前位置: 首页 > news >正文

java 动态代理

java 动态代理

代理

java中的代理分为 动态代理静态代理

这里的”代理“,可以理解为歌手的经纪人。当你的公司开年会,你想请某个明星来唱歌,你需要去找这个明星的经纪人,由这个经纪人负责安排前期事宜,让明星来唱歌,以及处理后期事宜。

就是由你直接找明星来唱歌,变成你找明星的经纪人,经纪人除了可以让明星来唱歌,还负责了大大小小的事宜。

或者可以这样理解,一个对象是一个宝宝,一个代理对象就是一个打了各种预防针的强化宝宝😂

Spring 中的 AOP机制 就使用到了动态代理。

这里会补充动态代理和静态代理的区别…

动态代理代码实现

java.lang.reflect.Proxy 类提供了为对象生成代理对象的 静态方法

public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

image-20250926220405799

  • 参数一指定类加载器,可以是任意一个类加载器,一般创建代理对象的方法创建在一个工具包中,这个工具包通常取名为 ProxyUtil,那么类加载器就使用 ProxyUtil.class.getClassLoader( )
  • 参数二为被代理对象实现的接口数组,假设object为被代理的对象,那么被代理对象实现的接口为 object.getClass( ).getInterfaces( )

返回数组

  • 参数三用于指定代理对象要干的事情,InvocationHandler 为接口,通过匿名内部类实现接口的invoke方法,在invoke方法里面编写业务逻辑代码。

    // InvocationHandler匿名内部类实现
    new InvocationHandler(){@Overridepublic Object invoke(Object proxy, Method method, Object[] args){// 业务逻辑一Object result = method.invoke(object, args); //object为被代理的对象// 业务逻辑二return result;}
    }
    
通用代码(创建代理对象的工具类)
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class ProxyUtil {public static <T> T createProxy(T obj) {T proxy = (T) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(),obj.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object invoke = method.invoke(obj, args);return invoke;}});return proxy;}
}
http://www.dtcms.com/a/411014.html

相关文章:

  • 24届-Java开发面经-华为od
  • 开源BI系统
  • article.2034672470
  • 洞头网站建设高端品牌女装特价网
  • 天津建设网站需要的费用宜宾住房与城乡建设部网站
  • 【译】Visual Studio 中针对 .NET MAUI 的 XAML 实时预览功能的增强
  • MySQL DML 与 DQL 基础语法详解:增删改查入门实战
  • 如何把AutoDL实例里的文件备份到Github仓库?
  • 化妆品网站制作兰州h5设计
  • 论批评与自我批评
  • 建网站公司浩森宇特深圳网站建设 华信科
  • Android 13 完整实现 USB 网卡支持与网络优先级配置(USB>WiFi>4G)
  • 加强网站建设的措施莱芜中医院网站
  • 衡水企业网站设计网站上怎么做推广
  • 狄利克雷卷积
  • 沈阳 教育 公司 网站建设种子搜索网站怎么做的
  • 矩阵置零--leetcode
  • 删除iCloud中的照片但保留iPhone上的照片的两种方法
  • 巴中市住房和城乡建设局官方网站广告牌子设计图片
  • 找学校的网站塔城网站seo
  • oracle linux 10 +pg18 源码安装要点
  • 如何快速排查服务器宕机故障
  • 分sheet写入excel
  • 怎么把网站黑了传统文化网站建设
  • 【开题答辩全过程】以 SpringBootVue的旅游租车管理系统为例,包含答辩的问题和答案
  • Windows配置PicGo+Gitee图床——解决你的MarkDown笔记分享无图片的问题
  • 网站排名alexawordpress 商城安全
  • 【开题答辩过程】以《分布式菌菇销售系统》为例,不会开题答辩的可以进来看看
  • 广州优化网站关键词静态网站用什么做
  • 油棕种植密度控制:单位面积产值与光照利用优化