JDK 动态代理
JDK 动态代理
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.com/chapterDetail/1685324709017001`
JDK 动态代理
简介
在 Java 中,JDK 动态代理 是一种基于接口的代理机制。它可以在运行时创建一个符合给定接口的新类(代理类),并将方法调用通过一个统一的处理器(InvocationHandler)进行处理。
实现步骤
1. 定义接口
首先,我们需要定义一个接口,它声明了我们想要代理的方法。
1 | public interface Subject { |
2. 创建真实对象
接下来,创建一个实现了 Subject 接口的真实类,这个类是我们实际想增强行为的类。
1 | public class RealSubject implements Subject { |
3. 定义调用处理器
定义一个 InvocationHandler
,用来编写 “ 额外的 “ 或者 “ 统一处理 “ 的代码,它会被代理对象的所有方法调用。
1 | public class DynamicProxyHandler implements InvocationHandler { |
4. 创建代理对象
最后,我们使用 Proxy
类和 InvocationHandler
创建代理对象。所有接口方法的调用都会被动态地委托给 InvocationHandler
实例。
1 | Subject subjectProxy = (Subject) Proxy.newProxyInstance( |
使用代理对象
使用代理对象和使用任何其他普普通通的对象没什么两样,调用对应的方法即可:
1 | subjectProxy.doAction(); |
这样,我们就通过 JDK 动态代理机制成功地在不改变原始类 RealSubject
的基础上,增强了方法的行为。