jdk动态代理示例以及代码原理分析
2016-12-09 14:49
351 查看
相信很多人在刚刚学习Java时,会感觉【动态代理】晦涩难懂,只知道如何来调用它,却不知道它的实现细节。本文通过根据JDK源码,展示这些细节,以期能对JDK的动态代理有深入的理解。
执行后的打印代码如下:
基于JDK的动态代理最终都是调用了上面类型的代码来实现。有时候感觉动态代理难以理解,是因为示例代码中有几个地方隐藏了实现细节,让人无法完全明白这个过程到底发生了什么。需要搞清楚的有以下2点:
待补充
简单示例代码
public class ProxyInstance implements Product { public void show() { System.out.println("这是原本的类"); } } public class JdkProxyTest { public static void main(String[] args) { final ProxyInstance target = new ProxyInstance(); Product proxy = (Product)Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理的前置方法"); Object object = method.invoke(target, args); System.out.println("代理的后置方法"); return object; } }); proxy.show(); } }
执行后的打印代码如下:
代理的前置方法 这是原本的类 代理的后置方法
基于JDK的动态代理最终都是调用了上面类型的代码来实现。有时候感觉动态代理难以理解,是因为示例代码中有几个地方隐藏了实现细节,让人无法完全明白这个过程到底发生了什么。需要搞清楚的有以下2点:
①既然说到代理,那么这个代理是何时、如何创建的? ②上面注入的InvocationHandler里的invoke方法由谁来调用执行?
代码分析
我们从Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)开始分析。
待补充
相关文章推荐
- Java JDK 动态代理使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- Java动态代理详解,以及底层JDK源码实现分析(基于Java8)。
- Java JDK 动态代理使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- 动态代理(jdk,cglib)原理以及区别
- 分析动态代理Java JDK 动态代理(AOP)使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- JDK动态代理原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- JDK动态代理实现及原理分析
- Spring aop 基于JDK动态代理和CGLIB代理的原理以及为什么JDK代理需要基于接口
- Java JDK 动态代理(AOP)使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- Java JDK 动态代理(AOP)使用及实现原理分析
- JDK动态代理实现原理(转)
- 通过代码组织,让你更好的理解和使用JDK动态代理
- JDK动态代理实现原理
- Java动态代理示例代码