我知道cglib代理通过子类化目标类和覆盖目标类的方法来工作。
谁能说出动态代理到底是如何工作的?
我知道它使用接口进行代理,但是方法调用是如何通过代理发生的呢?
最佳答案
使用Proxy.newProxyInstance()
,您可以请求实现所需接口的代理。您还需要传递InvocationHandler
,每次调用任何代理方法时都会调用该here。然后,在处理程序中,您知道调用了哪个方法及其参数,因此可以执行所需的操作,包括使用目标对象。
Java如何处理呢?好吧,它是本机完成的,就像reflection
的内部结构和许多基本功能一样。因此,您可以使用纯Java模仿此行为。
扩展信息。