每月代理IP知识
浅谈JAVA中使用动态代理的作用
更新:2021/1/15 8:21:28 浏览:1172次
在JAVA里有两种代理方式:动态代理和静态代理。今天蝶鸟IP一姐与大家讲解下JAVA中使用动态代理的作用是什么?
动态代理(Dynamic proxies)是Java1.3引入的特性,在J2EE的远程调用中应用非常广泛。给定一个抽象接口以及这个接口的具体实现,就可以通过创建两个额外的类来实现这个接口的远程调用了(例如跨JVM)。
首先,在源JVM上实现相应的接口,并将调用细节序列化后通过网络传输。然后,在目标JVM上,获取到序列化后的调用的细节,并分配给具体的的类去调用。
没有动态代理和反射,开发者不得不为每个远程接口提供两个类。一个动态代理是运行时产生的类,实现一个或多个接口,接口中每个方法的调用都会自动转换为 java.runtime.InvocationHandler 提供的方法调用:
public interface InvocationHandler {
Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
}
InvocationHandler决定如何处理调用,如何在运行时使用方法的有效信息,包括注解、参数类型及方法的返回类型。这样就可以实现一个通用逻辑来定义方法调用的分发。一旦你写好了一个InvocationHandler,就可以调用代理类的handler来完成所有接口中的方法,而不是为每一个接口写一个单独的实现。
远程调用最近几年里已经没那么受欢迎了,因为开发者需要明白方法调用分发与网络请求发送在语义和失败模式上的本质区别,但是动态代理仍保留在语言当中。
动态代理接口中声明的所有方法都被转移到调用处理器一个集中的方法中处理(InvocationHandler.invoke)。这样,在接口方法数量比较多的时候,我们可以进行灵活处理,而不需要像静态代理那样每一个方法进行中转。
蝶鸟代理IP平台专业提供国内优质短效代理IP,稳定高匿,支持Http(s)/Socks5协议,拥有3000多个节点,覆盖全国200多个城市,欢迎各位朋友前来测试和选购。
电话:13214265351
QQ:2873763815