java代理(Proxy)

本文介绍了Java代理的概念,特别是动态代理的原理和执行机制。动态代理能够在运行时生成类的字节码,并且用于创建具有相同接口的目标类的代理。代理的主要作用是控制对象的访问,预处理消息,过滤和转发消息。文中提到了`java.lang.reflect.Proxy`、`java.lang.reflect.InvocationHandler`和`java.lang.ClassLoader`这三个关键类在代理实现中的角色。通过学习,作者实现了自己的迷你框架,感到非常高兴,并理解了Spring框架的部分工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




      关于代理,我以前压根就没有接触过。在学视频中代理时,我在恍然大悟,原来赫赫有名的Spring框架就是靠这个技术做出来的啊,满惊讶的。学习完后也像张老师的一样做了个迷你小框架。感觉我也能做出框架来,满happy的!

    对代理做了个小总结:

     代理的主要作用:为其他类提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。

     动态代理的原理: jvm可以在运行期间动态生成出类的字节码,这种动态生成的类往往被用作代理类,即动态代理类,用jva生成的动态类必须实现一个或多个接口,所以,jvm生成的动态类只能用作具有相同接口的目标类代理

    代理的执行机制:客户端调用代理---->代理的构造方法接收一个InvocationHandler 对象--->然后客户端调用代理的各个方法--->InvocationHandler 对象的invoke方法又把方法分发给目标的相应方法并在调用方法前后添加一些其他功能,这里的”目标“即客户端要调用的程序 。

  

    代理要用到的三个主要类:

   java.lang.reflect.Proxy  提供用于创建动态代理类和实例的静态方法,它还是由这些方法创建的所有动态代理类的超类。

  java.lang.reflect.InvocationHandler 是代理实例的调用处程序实现的接口。 每个代理实例都具有一个关联的调用处理程序。对代理实例调用方法时,将对方法调用进行编码并将其指派到它的调用处理程序的invoke 方法

  java.lang.ClassLoader  类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。

                                            

 

 

 

     

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值