我知道cglib代理通过继承目标类并覆盖目标类的方法来工作。
有人能说出动态代理的确切运作方式吗? 我知道它使用接口进行代理,但是如何通过代理完成方法调用?
答案 0 :(得分:1)
使用Proxy.newProxyInstance()
,您可以要求代理实现所需的接口。您也需要传递InvocationHandler
,每次调用任何代理方法时都会调用它。然后,在您的处理程序中,您知道调用哪个方法及其参数,以便您可以执行所需的操作,包括使用目标对象。
Java如何处理这个问题?好吧,它是本地完成的,就像reflection
的内部和很多基本功能一样。因此,您可以使用普通Java来模拟此行为。
扩展信息here。