java代理模式(cglib、反射)
2021-07-05 12:51:05 6 举报
java代理模式(cglib、反射)
作者其他创作
大纲/内容
事件处理类
+ 重写Proxy.Invoke方法(params):returnType
代理类模板Class
实现Cglib接口
真实代理类-为加入JVM字节码重组类,实现所有代理类接口方法,在生成代理类每个方法中调用事件处理类Invoke方法,该引用在创建代理类时传入
真实代理类
被代理类
+ 开放方法(params):returnType
JDK代理原理
MethodInterceptor
Cglib不需要被代理类和动态生成代理类实现接口,Handler#intercept->MethodProxy.invokeSuper->注意:methodProxy代表的是一个代理方法的引用,intercept中使用methodProxy.invokeSuper而非methodProxy.invoke,invoke会造成死循环(因invoke方法内还是调用的代理类),因invokeSuper调用的是被代理类FastClass:Cglib会生成三个class文件:Customer$$EnhancerByCGLIB$$3feeb52a$$FastClassByCGLIB$$6aad62f1.class(代理类FastClass)
Enhancer代理生成类
继承
代理类接口
InvocationHandler
实现接口
事件处理类#intercept
传入
Proxy
收藏
0 条评论
下一页