帮助中心

   

热门搜索: 免费续期  推广  永久会员

JAVA中实现动态代理的3种API

JAVA有静态代理跟动态代理两种方式,在JAVA中实现动态代理,是基于java的三种API的,以下分别是这3种API的介绍:

 

JAVA中实现动态代理的3种API

 

1、java.lang.reflect.Proxy

 

这是 Java 动态代理机制生成的所有动态代理类的父类,它提供了一组静态方法来为一组接口动态地生成代理类及其对象。

 

<span style=”font-size:14px;”>// 方法 1: 该方法用于获取指定代理对象所关联的调用处理器

 

static InvocationHandler getInvocationHandler(Object proxy)

 

// 方法 2:该方法用于获取关联于指定类装载器和一组接口的动态代理类的类对象

 

static Class getProxyClass(ClassLoader loader, Class[] interfaces)

 

// 方法 3:该方法用于判断指定类对象是否是一个动态代理类

 

static boolean isProxyClass(Class cl)

 

// 方法 4:该方法用于为指定类装载器、一组接口及调用处理器生成动态代理类实例

 

static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)

 

</span>

 

2、java.lang.reflect.InvocationHandler

 

这是调用处理器接口,它自定义了一个 invoke 方法,用于集中处理在动态代理类对象上的方法调用,通常在该方法中实现对委托类的代理访问。每次生成动态代理类对象时都要指定一个对应的调用处理器对象。

 

<span style=”font-size:14px;”>// 该方法负责集中处理动态代理类上的所有方法调用。第一个参数既是代理类实例,第二个参数是被调用的方法对象

 

// 第三个方法是调用参数。调用处理器根据这三个参数进行预处理或分派到委托类实例上反射执行

 

Object invoke(Object proxy, Method method, Object[] args)

 

</span>

 

3、java.lang.ClassLoader(看到java类装载器,突然想到drp的时候还提到了tomcat类装载器)

 

这是类装载器类,负责将类的字节码装载到 Java 虚拟机(JVM)中并为其定义类对象,然后该类才能被使用。Proxy 静态方法生成动态代理类同样需要通过类装载器来进行装载才能使用,它与普通类的唯一区别就是其字节码是由 JVM 在运行时动态生成的而非预存在于任何一个 .class 文件中。

 

每次生成动态代理类对象时都需要指定一个类装载器对象 。

关闭
19907977089
关注微信公众号,免费送30分钟时长