• spring源码相关第四篇----------------------------spring aop实现原理源码解读


    spring aop实现原理源码解读

    这篇博客将会分为两点介绍aop的原理

    1.aop中的代理对象创建

    2.aop中代理对象以及其中各种通知相关调用操作

    refresh中的这个方法,为用户bean实例对象的创建开始,也是aop的开始,aop实现的代理对象有下面两个入口

    注意到此方法是创建,这里是常规aop代理对象创建的开始

    而最终都会进入到这里的方法进行代理对象的创建操作,jdk动态代理或者cglibc动态代理

    可以看到这里创建的代理对象默认是jdk动态代理对象

    最终将生成的代理的bean放入到bean对象缓存中,完成整个aop代理对象创建的整个流程。

    -------------------------以上完成aop相关代理对象创建流程,下面开始aop相关调用流程

    以上是aop创建的相关配置代码信息

     之后通过相关的代理类,调用到目标方法的时候,将进入到上图的这个方法,注意到这里的interceptorsAndDynamicMethodMatchers属性大小为因为有一个默认的ExposedInvocationInterceptor,其它分别为事务相关,前置通知相关,后置通知相关

    如果去除后置通知将会变成如下结果

    可见aop的相关通知与interceptorsAndDynamicMethodMatchers关联

    没调用一个aop通知之后又会回到这个方法,直到interceptorsAndDynamicMethodMatchers属性中的实现通知相关实现类调用完毕之后

                                                                    

     如上图调用完前置通知如上左图之后将会继续回到上面ReflectiveMethodInvocation类的invoke方法,同理后置通知会调用上述proceed方法之后执行后置通知相关操作如上右图所示,进而完成整个aop通知的执行,之后再调用目标方法,完成整个方法体的执行操作。aop原理讲解结束

  • 相关阅读:
    modals-methods 模态框 使用说明文档
    jquery validate form 异步提交
    log在线生成器 html中如何设置浏览器中标题前的logo
    解决django关于图片无法显示的问题
    Git远程操作
    Git基本操作
    Git思维导图
    连接GitHub的方法
    Git的三种区域
    Gentoo(贱兔)Linux安装笔记
  • 原文地址:https://www.cnblogs.com/chaojibaidu/p/14984475.html
Copyright © 2020-2023  润新知