参考文章: https://blog.csdn.net/zhang6622056/article/details/87286498
本篇文章主要参考 NeroJings作者的。我只是起到了搬运工的作用。
callbacks简介
这里的callback可以认为是cglib用于生成字节码的实现手段,cglib一共实现了6种callback,用于对代理类目标进行不同手段的代理,非常灵活,分别为
FixedValue
InvocationHandler
LazyLoader
MethodInterceptor
Dispatcher
NoOp
编写实现案例
Dispatcher
实现Dispatcher接口,要求实现loadObject方法,返回期望的代理类。值的一提的是,loadobject方法在每次调用被拦截方法的时候都会被调用一次。
FixedValue
实现FixedValue接口,该callback同样要求实现一个loadobject方法,只不过需要注意的是该loadobject方法相同与重写了被代理类的相应方法,因为在被代理之后,FixedValue callback只会调用loadobject,而不会再调用代理目标类的相应方法!
InvocationHandler
需要实现InvocationHandler接口,实现invoke