《四》Aop拦截器调用的实现

一、JdkDynamicAopProxy的invoke拦截

  • JdkDynamicAopProxy的invoke方法作为proxy对象的回调函数被触发,对proxy对象的代理设置是在invoke方法中完成的,包括获取目标对象,拦截器链。
  • 创建了ReflectiveMethodInvocation对象来完成对aop实现的封装,来完成一个完整的拦截器链对目标对象的拦截过程:拦截器链中拦截器配置、逐个运行拦截器链的拦截增强,直到对目标方法运行。
    在这里插入图片描述
    在这里插入图片描述

二、CglibAopProxy的intercept拦截

CglibAopProxy的intercept回调方法的实现跟JdkDynamicAopProxy回调实现极为相似,如图:
在这里插入图片描述
但是CglibAopProxy中是构造CglibMethodInvocation来完成拦截器调用,JdkDynamicAopProxy通过构造ReflectiveMethodInvocation对象来完成的。
有意思的是CglibMethodInvocation继承了ReflectiveMethodInvocation,所以两种对于拦截器调用基本一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章