转自:http://kuchaguangjie.iteye.com/blog/924265
Proxy
Proxy 代理,提供1种代理的方式去访问对象,
------
相关类
java.lang.reflect.Proxy;
java.lang.reflect.InvocationHandler;
------
原理
Proxy 调用 vm,根据给定的接口,创建 1个 Class 对象(给 Class 类型 实现给定的接口),
创建 InvocationHandler 的实现类,添加 1个属性 符合上面 指定的接口类型,该属性是真正的想操作的对象,
在 invoke() 方法用,使用该对象来调用方法,而不是传入的对象,
然后创建 1个 InvocationHandler 实现类 的对象,
调用 Proxy 创建的 Class 对象,用代理构造函数,借助 上面 InvocationHandler 实现类 的 1个对象,创建 1个 接口类型的 代理对象,
该 代理对象 将代理了上面 InvocationHandler 实现类中用做数据的对象,
当调用这个 对象时,实际上是调用了 InvocationHandler 中的数据对象,
从而实现了代理,
------
代理实现
2种格式实现代理,分别使用了 Proxy 的2个不同方法,配合 InvocationHandler 实现,
* 前提:
实现 InvocateHandler 类:
创建1个 InvocationHandler 实现类,其中包含1个属性是真正要操作的对象,提供1个构造函数,用于从外部传入该属性,
* Proxy.getProxyClass() 方式
步骤:
用 Proxy.getProxyClass() 创建 代理 Class 对象,
然后创建 代理 Constructor,
然后创建 代理 对象,
这样 操作 代理对象时,实际是 InvocationHandler 对象 从操作其中的 属性 完成方法调用,
* Proxy.newProxyInstance() 方式
步骤:
用 Proxy.newProxyInstance 直接创建 代理对象,
创建过程中,同样 需要 1个 InvocationHandler 类型的 对象,
*
------
例子
分享到:
相关推荐
java动态代理实例 要想理解拦截器的知识 最好要先理解java动态代理这块
java动态代理 public class HireProxy implements InvocationHandler { //被代理的真实角色 private Object obj; public HireProxy(Object obj) { super(); this.obj = obj; } //第二个参数method,被...
Java 动态代理详解(学习资料);Java 动态代理详解(学习资料);Java 动态代理详解(学习资料);Java 动态代理详解(学习资料);Java 动态代理详解(学习资料);
适用于初探java动态代理模式,精简易懂。
对代理模式与Java动态代理类的理解说明
java 动态代理 简单实例 新手看看
Java动态代理的helloworld,抛砖引玉吧
描述java动态代理,说明了怎么实现java的动态代理
Java 动态代理 借用电子商务模式来说明
更好的了解java动态代理的原理!
java动态代理 经典文章(word 2007格式的) 要用word 2007看
一个简单的java动态代理的实例
用Java动态代理实现AOP,讲的很好(用Java动态代理实现AOP)
Java动态代理实现数据源连接池,用代理类实现的连接池代码,绝对完整的案例,下载源码就能跑起来!Java动态代理实现数据源连接池,用代理类实现的连接池代码
Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类: (1) Interface InvocationHandler (2) Proxy:该类即为动态代理类,
Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类: (1) Interface InvocationHandler (2) Proxy:该类即为动态代理类,
java动态代理项目实践优化(3)
Java实现动态代理的两种方式。 相对来说cglib更加方便。可以实现为实现接口的类(非final类)
java动态代理 完整版 java动态代理 完整版 java动态代理 完整版 java动态代理 完整版 java动态代理 完整版
java动态代理的机制分析,以及相应的拓展。有详细的代码和实例加以分析。