AOP的组成部分

几个关键部分: 一个是AOP的配置(拦截规则的配置),一个是代理对象的创建,一个是统一的拦截调用过程。
AOP的配置:Spring是自己定义了一套规则同时集成了AspectJ的语法,抽象为了Pointcut类。
代理对象的创建:SpringAOP定义了一个工厂类AopProxy,同时支持JDK动态代理和CGlib动态代理。
统一的拦截调用过程:则是使用了AOP联盟中定义的拦截过程:Advice—–>Interceptor——->MethodInterceptor。但是SpringAOP在这个基础上做了一些扩展,形成了自己的一套体系。

接下来介绍Spring AOP 各组成部分:
Advice:SpringAOP联盟中定义的类。是一个标识性的接口。通知类型的接口。同时也是Interceptor、MethodInterceptor的父类。通知类型都有去实现的一个接口。
Advisor:关联了Advice和Pointcut。在SpringAOP中是一个很关键的类。上起到了连接点的匹配下起到了通知类型的调用。统一了拦截的调用过程。
Advised:关联了Advisor和TargetSource的类。也是AOP中一个很关键的类。AOP进行方法拦截的时候,就是从它里面获取的拦截调用链。

aop各组成 部分及相互关系,如下类图:

Spring源码:AOP(1)相关推荐

  1. Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator

    2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 源码解析系列,建议大家按顺序阅读,欢迎讨论 Spring源码-AOP(一)-代理模式 Spring源码- ...

  2. Spring源码——AOP

    前言 内容主要参考自<Spring源码深度解析>一书,算是读书笔记或是原书的补充.进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情. 本文主要涉及书中第七章的部分,依照书中内容 ...

  3. Spring源码——动态AOP实现流程

    前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...

  4. Spring源码——声明式事务流程

    前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...

  5. spring源码学习之路---深入AOP(终)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下sp ...

  6. Spring源码:AOP转文

    Spring源码分析-深入浅出AOP(图文分析) https://blog.csdn.net/c_unclezhang/article/details/78769426 Spring中AOP的配置从1 ...

  7. 【Spring源码】AOP切面源码

    [Spring源码]AOP切面源码 关键词 后置处理器BeanPostProcessor后置方法:applyBeanPostProcessorsAfterInitialization() 切面后置处理 ...

  8. Spring 源码分析(三) —— AOP(五)创建代理

    2019独角兽企业重金招聘Python工程师标准>>> 创建代理 代理的定义其实非常简单,就是改变原来目标对象方法调用的运行轨迹.这种改变,首先会对这些方法进行拦截,从而为这些方法提 ...

  9. Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构

    2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构         先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...

  10. 从Spring源码探究AOP代码织入的过程

    随着不断地使用Spring,以及后续的Boot.cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考. 通过自学 ...

最新文章

  1. 【技术综述】基于弱监督深度学习的图像分割方法综述​
  2. PHP的ob多级缓冲设置
  3. 屏幕自动亮度不停的变_LCD最后的荣耀?卢伟冰:我们的屏幕比iPhone11更优秀
  4. 本地存储和移动端js框架及bootstrap简介
  5. mysql从节点放家里_添加MySQL 5.6 从节点 Slave
  6. Java 垃圾回收算法之G1
  7. 李宏毅机器学习课程8~~~keras
  8. Spring学习总结(33)—— 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?
  9. FFmpeg的H.264解码器源代码简单分析:解码器主干部分
  10. Windows server 2008 iis7 下配置PHP+MySql
  11. IIS Express URL Rewrite无效
  12. Yandex浏览器 - 可以在手机上安装chrome插件的浏览器
  13. 盘点开发人员都应该了解的7种JavaScript设计模式
  14. 快递 code与快递名称
  15. “因遭勒索软件攻击,我被认定工作失职开除,并被老东家索赔 21.5 万元”
  16. 【python ++ opencv + pytorch 】车牌提取、分割、识别
  17. 编程求一个9位的整数,数字由1-9构成,每个数字只能出现一次。并且这个整数的前一位能被1整除,前两位能被2整除, ......以此类推,前九位能被9整除。
  18. 群晖 使用SMB3进行局域网传输双倍叠加网速下踩的一些坑
  19. Java高频面试题(2022) - Java、Mysql、JUC、JVM、SSM
  20. 如何理解服务注册和服务发现

热门文章

  1. Win7下提取加密PDF文件(pdf加密成exe)
  2. C++中使用TCP传文件
  3. 边缘检测(5)Canny算法
  4. Android_安卓为按钮控件绑定事件的五种方式
  5. C#代码创建Xml文件
  6. IOS15给UICollection添加测试数字
  7. 关于VMware虚拟机安装windows 7系统
  8. python3多线程实例_python3多线程糗事百科案例
  9. matlab根据url链接下载*.tar文件并解压
  10. 信息收集 ——C段扫描