动态代理是java语言的一个神奇的地方,不是很好理解,下面来看看关键的地方。
InvocationHandler 是一个接口,官方文档解释说,每个代理的实例都有一个与之关联的 InvocationHandler 实现类,如果代理的方法被调用,那么代理便会通知和转发给内部的 InvocationHandler 实现类,由它决定处理。
public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; }
InvocationHandler 内部只是一个 invoke() 方法,正是这个方法决定了怎么样处理代理传递过来的方法调用。
proxy 代理对象
method 代理对象调用的方法
args 调用的方法中的参数
method.invoke(ldh, args); //这个方法是核心,很重要,调用了被代理对象的方
可以说,这两个invoke方法就是动态代理的核心,动态代理还多了一个对象proxy。
附上两篇文章:https://blog.csdn.net/pangqiandou/article/details/52964066,https://blog.csdn.net/briblue/article/details/73928350
原文地址:https://www.cnblogs.com/Robin008/p/10241898.html
时间: 2024-10-12 11:16:42