有关AOP术语(织入、增强等)的个人理解
2021.4.11
阅读《精通Spring4.x企业应用开发实战》一书做笔记
下图为本人理解的AOP术语韦恩图,由于引介跟增强在同一个位置,没在图上标出。
连接点(Joint Point)
由两个组成:
- 程序执行点
- 相对位置表示的方位
Test.foo方法执行前的连接点:
执行点为Test.foo(),方位是执行前的位置。
切点(Pointcut)
每个程序有多无数多的连接点,如果程序中有一个方法,那么连接点就有方法执行前,方法执行后,异常抛出时,方法调用前后这些连接点。
Spring中通过切点来定位特定的连接点。
连接点相当于数据库的记录,切点相当于查询条件。
所以,切点不是点,切点是查询条件。
SpringAOP通过切点来找点连接点中的执行点,注意是执行点,因为切点只定位在某个方向,而不会提供方位信息。
增强(Advice)
增强是一段代码,注意增强是代码。
并且advice不是同志的意思,应该翻译成enhancer可能会更好。
在Spring中,增强除了是一段代码之外,它还提供了方位信息,比如:
BeforeAdvice、AfterReturnAdvice、ThrowAdvice。
目标对象(Target)
目标对象就是被被代理类。
引介(Introduction)
引介是一种特殊的增强,它为类添加了一些属性和方法。
通过引介可以让被代理类实现一些接口。
织入(Weaving)
织入是一个动作,也可以说是一个过程。
就是将增强织入到被代理类连接点的过程。
织入分为三种类型:
- 编译期织入
- 类装载期织入
- 动态代理织入(Spring采取的做法)
代理(Proxy)
一个类被AOP织入增强之后,就会产生一个结果类。
其实动态代理的本质就是产生一个新的类,只是这个类由SpringAOP帮我们做了,对于我们来说是透明的。
切面(Aspect)
切面由两点组成:
- 切点
- 增强
既包含横切逻辑的定义,也包含连接点的定义。
SpringAOP的执行单位就是切面。
SpringAOP两大重点工作:
- 如何通过切点和增强定位某一个连接点
- 如何在增强中编写切面的代码。
有关AOP术语(织入、增强等)的个人理解相关推荐
- .Net Aop(静态织入)框架 BSF.Aop
BSF.Aop .Net 免费开源,静态Aop织入(直接修改IL中间语言)框架,类似PostSharp(收费): 实现前后Aop切面和INotifyPropertyChanged注入方式. 开源地址: ...
- 从Spring源码探究AOP代码织入的过程
随着不断地使用Spring,以及后续的Boot.cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考. 通过自学 ...
- Java手写Spring的AOP(切面织入)小Demo--盲僧代理击飞 亚索接大实例
在学习Spring的过程中总会很迷茫,打个@Aspect注解切面功能就有了,只要脱离了框架感觉自己还是什么都没会,所以自己猜了一下切面的思路,大概写了个小Demo,欢迎交流. 涉及知识:JDK动态代理 ...
- Java - 你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net a. 连接点(Joinpoint):程序执行的某个特 ...
- AOP相关术语(连接点、切入点、通知、引介、目标对象、织入、代理、切面)
Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.(通俗理解:业务层接口的所有方法都叫连接点) Pointcu ...
- Spring 揭秘之Spring AOP一世(2)织入实现
文章目录 Spring AOP一世 Spring AOP的织入 与ProxyFactory打交道 基于接口的代理 基于类的代理 Introduction的织入 ProxyFactory的本质 容器中的 ...
- spring中的aop术语和细节
Spring中AOP的细节 说明 我们学习spring的aop,就是通过配置的方式 AOP相关术语 Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法, ...
- AOP术语、SpringAOP
AOP术语.SpringAOP AOP中的相关术语 SpringAOP中的实现 Spring对AOP的支持 示例 切点表达式.切点 切面 增强通知 织入 目标对象 结果 AOP中的相关术语 官方 As ...
- spring的AOP术语
分析 技术分析之AOP的相关术语 1. Joinpoint(连接点) -- 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点 2. Point ...
最新文章
- 蓝桥杯国赛-矩阵计数三种解法-java实现
- qchart画完以后删除_Unity2019基础教程:TileMap搭建像素画场景关卡
- 运用BeautifulSoup抓取网页的链接
- 11有没有压力感应_特殊感应器赋予机械手多维触感
- setid android,android-如何将setId()用于imageView
- 国内外公共CDN静态资源网站大全
- 基于ProtocolBuffer和ysocket的Swift即时通讯服务器搭建
- 使用Golang搭建web服务
- Git 代码防丢指南,再也不怕丢失代码了!
- linux异步事件框架,基于Cortex-M系列CPU的异步事件驱动中间件
- android专业拍照软件,安卓最专业的拍照软件排行榜 优质滤镜相机软件推荐
- 英语读音(一) English Pronounciation
- 【Mybatis】动态SQL之choose标签
- Win11的两个实用技巧系列之没有声音如何解决、bat代码怎么写
- sublime3编程c语言,Sublime Text 3 实现C语言代码的编译和运行(示例讲解)
- 日志20130104~0308
- 使用docker安装RAP2心得
- kNN分类算法伪代码最简python代码
- 【CodeForces】[546A]Soldier and Bananas
- 数据的商业化实现之商圈选址
热门文章
- 安卓学习文档收集汇总
- 如何查找SAP notes
- 关于LDO并联在输入输出端二极管
- oracle 使用 mybatis select in 10000问题怎么解决
- Oracle的字符集由AMERICAN_AMERICA.ZHS16GBK修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- 如何用闲置手机/电脑摄像头,搭建远程视频监控
- 自我介绍 的html页面,html初学者自我介绍网页
- How to Use Matlab Publish Smartly
- 数据分析的三重境界,你在哪个阶段?
- md5 java 实现_MD5加密的Java实现