Spring源码:AOP(1)
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)相关推荐
- Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator
2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 源码解析系列,建议大家按顺序阅读,欢迎讨论 Spring源码-AOP(一)-代理模式 Spring源码- ...
- Spring源码——AOP
前言 内容主要参考自<Spring源码深度解析>一书,算是读书笔记或是原书的补充.进入正文后可能会引来各种不适,毕竟阅读源码是件极其痛苦的事情. 本文主要涉及书中第七章的部分,依照书中内容 ...
- Spring源码——动态AOP实现流程
前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...
- Spring源码——声明式事务流程
前言 最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图.图片等文件更新在https://github.com/MrSorrow/spring-frame ...
- spring源码学习之路---深入AOP(终)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 上一章和各位一起看了一下sp ...
- Spring源码:AOP转文
Spring源码分析-深入浅出AOP(图文分析) https://blog.csdn.net/c_unclezhang/article/details/78769426 Spring中AOP的配置从1 ...
- 【Spring源码】AOP切面源码
[Spring源码]AOP切面源码 关键词 后置处理器BeanPostProcessor后置方法:applyBeanPostProcessorsAfterInitialization() 切面后置处理 ...
- Spring 源码分析(三) —— AOP(五)创建代理
2019独角兽企业重金招聘Python工程师标准>>> 创建代理 代理的定义其实非常简单,就是改变原来目标对象方法调用的运行轨迹.这种改变,首先会对这些方法进行拦截,从而为这些方法提 ...
- Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构
2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构 先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...
- 从Spring源码探究AOP代码织入的过程
随着不断地使用Spring,以及后续的Boot.cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考. 通过自学 ...
最新文章
- 【技术综述】基于弱监督深度学习的图像分割方法综述​
- PHP的ob多级缓冲设置
- 屏幕自动亮度不停的变_LCD最后的荣耀?卢伟冰:我们的屏幕比iPhone11更优秀
- 本地存储和移动端js框架及bootstrap简介
- mysql从节点放家里_添加MySQL 5.6 从节点 Slave
- Java 垃圾回收算法之G1
- 李宏毅机器学习课程8~~~keras
- Spring学习总结(33)—— 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?
- FFmpeg的H.264解码器源代码简单分析:解码器主干部分
- Windows server 2008 iis7 下配置PHP+MySql
- IIS Express URL Rewrite无效
- Yandex浏览器 - 可以在手机上安装chrome插件的浏览器
- 盘点开发人员都应该了解的7种JavaScript设计模式
- 快递 code与快递名称
- “因遭勒索软件攻击,我被认定工作失职开除,并被老东家索赔 21.5 万元”
- 【python ++ opencv + pytorch 】车牌提取、分割、识别
- 编程求一个9位的整数,数字由1-9构成,每个数字只能出现一次。并且这个整数的前一位能被1整除,前两位能被2整除, ......以此类推,前九位能被9整除。
- 群晖 使用SMB3进行局域网传输双倍叠加网速下踩的一些坑
- Java高频面试题(2022) - Java、Mysql、JUC、JVM、SSM
- 如何理解服务注册和服务发现