美文网首页
java jdk动态代理技术

java jdk动态代理技术

作者: LX_代码制造坊 | 来源:发表于2021-01-15 11:01 被阅读0次

JDK动态代理必须实现接口,通过反射来动态代理方法,缺点是消耗系统性能。但是无需产生过多的代理类,避免了重复代码的产生,系统更加灵活。可以看到JDK动态代理比静态代理更加灵活。

public class JDKTest {
    public static void main(String[] args) {
        Factory factory = new Factory();
        InvocationHandler invocationHandler = new Taobao(factory);
        Usb o = (Usb) Proxy.newProxyInstance(factory.getClass().getClassLoader(),
                factory.getClass().getInterfaces(), invocationHandler);
        int sell = o.sell();
        System.out.println(sell);
    }
}

//目标接口
interface Usb {
    int sell();
}

//目标类
class Factory implements Usb {

    @Override
    public int sell() {
        return 10;
    }

}

//动态代理类
class Taobao implements InvocationHandler {
    private Object target;

    public Taobao() {
    }

    public Taobao(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object ret = method.invoke(target, args);
        int price = (int) ret;
        return price + 10;
    }
}

相关文章

  • Java 动态代理

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

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

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

  • 动态代理的两种方式

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

  • JAVA动态代理

    Spring AOP功能最基本的技术要点为动态代理。当下Java主要有两种动态代理方式 基于接口的JDK动态代理 ...

  • Spring AOP

    本文主要是解析Spring AOP的运作流程。上次讲到Java中的两种动态代理技术:JDK动态代理和CGLIB动态...

  • Java动态代理

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

  • JDK动态代理详解

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

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

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

  • Java代理模式之CGLIB动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 前面我们了解了JDK动态代理技术,发现其真实对象必...

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

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

网友评论

      本文标题:java jdk动态代理技术

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