GeezerVison is showing github.com — Update 代理模式详解.md · debugjoker/JavaGuide@e534636
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: docs/java/basis/代理模式详解.md +5-5Lines changed: 5 additions & 5 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -120,15 +120,15 @@ after method send() |
120 | 120 |
|
121 | 121 | **从 JVM 角度来说,动态代理是在运行时动态生成类字节码,并加载到 JVM 中的。** |
122 | 122 |
|
123 | | -说到动态代理,Spring AOP、RPC 框架应该是两个不得不的提的,它们的实现都依赖了动态代理。 |
| 123 | +说到动态代理,Spring AOP、RPC 框架应该是两个不得不提的,它们的实现都依赖了动态代理。 |
124 | 124 |
|
125 | | -**动态代理在我们日常开发中使用的相对较小,但是在框架中的几乎是必用的一门技术。学会了动态代理之后,对于我们理解和学习各种框架的原理也非常有帮助。** |
| 125 | +**动态代理在我们日常开发中使用的相对较少,但是在框架中的几乎是必用的一门技术。学会了动态代理之后,对于我们理解和学习各种框架的原理也非常有帮助。** |
126 | 126 |
|
127 | 127 | 就 Java 来说,动态代理的实现方式有很多种,比如 **JDK 动态代理**、**CGLIB 动态代理**等等。 |
128 | 128 |
|
129 | 129 | [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 使用的是 JDK 动态代理,我们先来看看 JDK 动态代理的使用。 |
130 | 130 |
|
131 | | -另外,虽然 [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 没有用到 **CGLIB 动态代理 ,我们这里还是简单介绍一下其使用以及和**JDK 动态代理的对比。 |
| 131 | +另外,虽然 [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 没有用到 **CGLIB 动态代理** ,我们这里还是简单介绍一下其使用以及和**JDK 动态代理**的对比。 |
132 | 132 |
|
133 | 133 | ### 3.1. JDK 动态代理机制 |
134 | 134 |
|
@@ -154,7 +154,7 @@ after method send() |
154 | 154 | 2. **interfaces** : 被代理类实现的一些接口; |
155 | 155 | 3. **h** : 实现了 `InvocationHandler` 接口的对象; |
156 | 156 |
|
157 | | -要实现动态代理的话,还必须需要实现`InvocationHandler` 来自定义处理逻辑。 当我们的动态代理对象调用一个方法时候,这个方法的调用就会被转发到实现`InvocationHandler` 接口类的 `invoke` 方法来调用。 |
| 157 | +要实现动态代理的话,还必须需要实现`InvocationHandler` 来自定义处理逻辑。 当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现`InvocationHandler` 接口类的 `invoke` 方法来调用。 |
158 | 158 |
|
159 | 159 | ```java |
160 | 160 | public interface InvocationHandler { |
@@ -298,7 +298,7 @@ extends Callback{ |
298 | 298 | 1. **obj** :被代理的对象(需要增强的对象) |
299 | 299 | 2. **method** :被拦截的方法(需要增强的方法) |
300 | 300 | 3. **args** :方法入参 |
301 | | -4. **methodProxy** :用于调用原始方法 |
| 301 | +4. **proxy** :用于调用原始方法 |
302 | 302 |
|
303 | 303 | 你可以通过 `Enhancer`类来动态获取被代理类,当代理类调用方法的时候,实际调用的是 `MethodInterceptor` 中的 `intercept` 方法。 |
304 | 304 |
|
|