JDK动态代理

简介: JDK动态代理

DK动态代理

在继续探究前,先简单带过一下动态代理。 代理模式主要功能是为了增强一个类中的方法诞生的一种设计模式。 而代理模式分为动态代理和静态代理,动态代理的代理类是在运行时生成的,而静态代理是在编译时生成的。动态代理可以分为基于接口的JDK动态代理和基于类的Cglib动态代理。


下面讲解一下基于JDK的动态代理: 在 java 的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过这个类和这个接口可以生成JDK动态代理类和动态代理对象。

public interface Person {
    void work();
}






public class Student implements Person {
    @Override
    public void work() {
        System.out.println("读书");
    }
}






public class MyInvocationHandler implements InvocationHandler {
    //增强的目标类
    private Person person;

    public MyInvocationHandler(Person person) {
        this.person = person;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("先吃饭-----再看书");
        method.invoke(person, args);
        return null;
    }
}







public class Main {
    public static void main(String[] args) {
        Person person = new Student();
        MyInvocationHandler myInvocationHandler = new MyInvocationHandler(person);
        System.out.println(Arrays.toString(Student.class.getInterfaces()));
        Person proPerson = (Person) Proxy.newProxyInstance(Student.class.getClassLoader(), Student.class.getInterfaces(), myInvocationHandler);
        proPerson.work();
    }
}


相关文章
|
7月前
|
Java 程序员
动态代理
动态代理
28 0
|
2天前
|
Java 程序员 API
浅谈JDK动态代理
浅谈JDK动态代理
33 1
|
2天前
|
设计模式 Java
动态代理详解
【2月更文挑战第7天】
动态代理详解
|
2天前
|
Java
关于JDK动态代理
关于JDK动态代理的一些理解
15 0
|
10月前
|
Java
jdk动态代理和cglb动态代理
jdk动态代理和cglb动态代理
|
12月前
|
Java Spring
jdk动态代理和cglib动态代理
只有聪明人才能看见的简介~( ̄▽ ̄~)~
55 0
jdk动态代理和cglib动态代理
|
Java 编译器 Maven
动态代理竟然如此简单!(二)
这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、RPC远程调用、Java 注解对象获取、日志框架、全局性异常处理、事务处理等。
80 0
动态代理竟然如此简单!(二)
|
设计模式 Java 程序员
动态代理竟然如此简单!(一)
这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛的应用,比如 AOP 的实现原理、RPC远程调用、Java 注解对象获取、日志框架、全局性异常处理、事务处理等。
124 0
动态代理竟然如此简单!(一)
|
Java Spring
静态代理与JDK动态代理与CGLIB动态代理(上)
静态代理与JDK动态代理与CGLIB动态代理(上)
|
Java 索引
静态代理与JDK动态代理与CGLIB动态代理(下)
静态代理与JDK动态代理与CGLIB动态代理(下)