美文网首页
Java JDK动态代理实例

Java JDK动态代理实例

作者: 在error边缘疯狂试探 | 来源:发表于2020-08-07 16:37 被阅读0次

房屋出租的接口

package 动态代理;
//租房接口
public interface Rent {
    public void rent();
}

房东实现出租的方法

package 动态代理;
// 房东进行租房
public class Host  implements Rent
{
    @Override
    public void rent() {
        System.out.println("房东开始出租房子啦!");
    }
}

设置调用处理器,实现InvocaHandler 接口

package 动态代理;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

// 我的程序调用处理器,通过实现InvocationHandler 编程一个处理器,再通过Proxy 代理类的newProxyInstance()方法 获得 形成的代理对象
public class MyInvocationHandler implements InvocationHandler {
//    将被代理的接口对象引入
    private Rent rent;

//    private Object object;
//
//    public void setObject(Object object) {
//        this.object = object;
//    }

    public void setRent(Rent rent) {
        this.rent = rent;
    }

    public Object getProxyClass(){
//        return Proxy.newProxyInstance(this.getClass().getClassLoader(),object.getClass().getInterfaces(),this);
        return Proxy.newProxyInstance(this.getClass().getClassLoader(),rent.getClass().getInterfaces(),this);

    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        seeHouse();
        method.invoke(rent,args);
//        method.invoke(object,args);
        fare();
        return null;
    }
//  这里的方法应该是被代理类所需要的通用的方法,比如日志、事务等。。。
    public void seeHouse(){
        System.out.println("中介带你看房!!");
    }
    public void fare(){
        System.out.println("向中介付钱!!");
    }

}

客户端调用

package 动态代理;

public class Client {

    public static void main(String[] args) {
//        创建出要被代理的角色
        Host host = new Host();
        MyInvocationHandler myInvocationHandler = new MyInvocationHandler();
//        将被代理的角色放入调用处理器中
        myInvocationHandler.setRent(host);
        Rent proxyClass = (Rent) myInvocationHandler.getProxyClass();
        proxyClass.rent();

    }
}

相关文章

  • 动态代理的两种方式

    静态代理就不说了,基本用到的都是动态代理。 Java中动态代理有JDK动态代理和CGLIB动态代理。 JDK代理的...

  • Java 动态代理

    java的动态代理机制详解 JDK动态代理详解 Java核心技术点之动态代理

  • Java JDK动态代理实例

    房屋出租的接口 房东实现出租的方法 设置调用处理器,实现InvocaHandler 接口 客户端调用

  • Java动态代理

    参考来源: Java动态代理视频 JDK动态代理实现原理 JDK Dynamic Proxies Building...

  • JDK动态代理详解

    JDK动态代理详解 java动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及...

  • 源码解析--JDK动态代理

    动态代理的两种方式JDK动态代理和cglib动态代理在上一篇中动态代理jdk和cglib的区别已经通过实例做了比较...

  • Jdk动态代理 底层源码分析

    前言 java动态代理主要有2种,Jdk动态代理、Cglib动态代理,本文主要讲解Jdk动态代理的使用、运行机制、...

  • java动态代理(JDK和cglib)(转载自http://ww

    java动态代理(JDK和cglib) JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是...

  • 保存java 动态代理生成的字节码文件

    保存java 动态代理生成的字节码文件 在Java中,常用的动态代理技术有JDK的动态代理和cglib动态代理,不...

  • 4

    6、java动态代理:两个重要类: 1、Proxy:jdk提供的帮助类(类似于工厂)用于生成代理实例,Proxy....

网友评论

      本文标题:Java JDK动态代理实例

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