JDK动态代理理解精髓

Posted THISISPAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK动态代理理解精髓相关的知识,希望对你有一定的参考价值。

 
1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
2.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
3.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
4.所以精髓是InvocationHandler和Proxy是一一绑定的,是配对的。
 
5.再创建动态代理,针对不同的target对象拦截,只需要保证proxy和invocation的参数是成对的,是匹配的,同一个即可。那么这套Proxy和Invocation就可以复用。
 
5 代理类:程序执行时真正执行的是代理类,代理类是实现了拦截器的流程的类。
package com.lanvis.reflect;
import java.lang.reflect.Proxy;
public class MyProxy {
    public Object getProxy(Object object) {
        MyHandler myHandler = new MyHandler();
        myHandler.setObject(object);
        return Proxy.newProxyInstance(object.getClass().getClassLoader(),
                object.getClass().getInterfaces(), myHandler);
    }
}
6 测试类:用来测试拦截器成功与否。
package com.lanvis.reflect;
public class Test {
    public static void main(String[] args){
        ITarget target=new Target();
        MyProxy myProxy=new MyProxy();
        ITarget proxy=(ITarget)myProxy.getProxy(target);
        proxy.doSthing();
        proxy.doOthing();
    }
}

以上是关于JDK动态代理理解精髓的主要内容,如果未能解决你的问题,请参考以下文章

JDK动态代理的简单理解

深入理解设计模式-代理模式(静态代理动态代理jdk和cglib)

深入理解设计模式-代理模式(静态代理动态代理jdk和cglib)

Java 动态代理的简单使用和理解

JDK动态代理

JDK动态代理