RPC核心原理
1. RPC基础
1.5 动态代理
什么是动态代理
动态代理就是在程序运行期间,创建目标对象的代理对象,在不改变其代码的情况下,对目标对象的方法进行功能性增强。比如Spring AOP中我们在项目使用的统一拦截功能,如权限认证、性能统计等都是动态代理的体现。
RPC中,客户方在使用服务提供方所提供的功能时,只是通过Maven等方式导入提供的接口,其中并不包含真正的业务逻辑,但我们又是怎样调用到确实发挥作用的方法,其中的核心技术就是动态代理,其调用流程如下。
JDK 动态代理使用示例
/**
* 要代理的接口
*/
interface Hello {
String say();
}
/**
* 真实调用对象
*/
class RealHello {
public String invoke(){
return "i'm proxy";
}
}
/**
* JDK代理类生成
*/
class JDKProxy implements InvocationHandler {
private Object target;
JDKProxy(Object target) {
this.target = target;
}
@Override