在一些第三方框架中经常能看到动态代理的案例,尤其是RPC框架,ORM框架等,该篇将分析这些实现的原理,另外延伸在业务中的使用示例.
----
动态代理模式
关于代理模式在之前的关于IOC与AOP的一些理解中已经有了一些分析...,所以在此不再叙述,只需要理解以下两点即可:
动态代理的本质是控制对对象的访问,通过代理类,每一个方法请求都会转到对应的invoker()方法中,从而实现各种hack的逻辑,比如RPC的远程调用,Mybatis...AOP是基于动态代理,但是其与动态代理不同的是AOP要增强的那个类是实实在在存在的,动态代理只是起到了分发方法请求的作用,在分发过程中执行了自定义的逻辑从而达到的增强处理....一种解决方案是使用动态代理,当创建FutureTask之后,将其放入线程池,然后返回一个代理类供客户端使用,当客户端调用代理类的相应方法时,在代理类中则会调用future.get()方法达到转发到真实的...System.out.println(users);
}
该方式本质上是ORM 的延迟加载的扩展应用,只不过延迟加载获取数据是到 DB 中拉取,而这里是去异步任务Future中获取.