美文网首页
Java 代理模式

Java 代理模式

作者: qezhhnjy | 来源:发表于2018-11-21 19:55 被阅读0次

    https://blog.csdn.net/scplove/article/details/52451899
    java reflect proxy


    java.jpg

    Java动态代理的类和接口

        <artifactId>eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    • java.lang.reflect.Proxy:动态代理机制的主类,提供一组静态方法为一组接口动态的生成对象和代理类。
    public static InvocationHandler getInvocationHandler(Object proxy) 
    public static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces) 
    public static boolean isProxyClass(Class<?> cl) 
    public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h)
    
    • java.lang.reflect.InvocationHandler:调用处理器接口,自定义invokle方法,用于实现对于真正委托类的代理访问。
    public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
    
    • java.lang.ClassLoader:类装载器类,将类的字节码装载到 Java 虚拟机(JVM)中并为其定义类对象,然后该类才能被使用。Proxy类与普通类的唯一区别就是其字节码是由 JVM 在运行时动态生成的而非预存在于任何一个 .class 文件中
      每次生成动态代理类对象时都需要指定一个类装载器对象:newProxyInstance()方法第一个参数。

    动态代理机制

    1. 通过实现InvocationHandler接口创建自己的调用处理器。
    2. 通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理类。
    3. 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型。
    4. 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。

    相关文章

      网友评论

          本文标题:Java 代理模式

          本文链接:https://www.haomeiwen.com/subject/sgchqqtx.html