动态代理模式,在当前流行框架(如:Spring、Mybatis、Dubbo)中应用非常广泛,掌握动态代理模式是理解框架源码的基础。如果未来你参与框架的设计与开发,动态代理模式必将成为你的利器。
动态代理的实践:一、创建实现InvocationHandler接口的类,并重写invoke方法;二、使用Proxy.newProxyInstance创建代理对象;三、JDK的动态代理针对的是接口(使用Mybatis的时候我们创建的Mapper都是接口,接口没有实现类是如何正常调用的呢,答案就是动态代理)。




日志打印:

接下来我们来看下Mybats的动态代理实践:


划重点:动态代理是一种思想,提供了对同一类问题集中统一的解决方案。就如Mybatis,所有的Mapper都由统一的动态代理类处理。思想是根基,更重要的是后续统一处理操作,这个就需要根据具体框架使用场景具体实现了。
网友评论