先来看下调用流程图
1.获取代理对象实例getObject函数会调用getProxy函数.在使用第三方AOP实现cglib库时,调用的是cglibAopProxy的getProxy实现.这个实现源码截图如下:
这里使用enhancer类进行封装,具体实现很是复杂.有部分源码没有需要自己下载cglib库的实现源码才能查看.我们这里只关心Aop的实现.而这个实现关键就是上面标亮的getCallbacks函数调用.看下这个函数调用干了什么
关注高亮的函数调用,这里就是实现spring AOP的关键调用了,进去看源码实现
着重关注上面三个高亮的函数调用.
第一个高亮处是DynamicAdvisedInterceptor这个类承继了MethodInterceptor这个接口.那么这个接口是干什么用的呢.看cglib库MethodInterceptor接口描述截图如下
看上面的介绍,所有的method调用都会走intercept这个接口调用而不是原本的met
使用ObjenesisCglibAopProxy方式实现aop
最新推荐文章于 2024-09-27 14:14:30 发布