当前位置: 首页>后端>正文

【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入)

程序员小猿开发笔记,希望大家共同进步。
与大多数技术一样,AOP已经形成了自己的术语。

【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第1张
file

描述切面的常用术 语有通知 (advice ) 、切点 (pointcut) 和连接点 (join point) 。


【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第2张
file
各位小猿,我们可以用一句话来概括各个元素之间的关系“把切面的功能(通知)织入到程序的执行过程中。
【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第3张
file

图4 .2 在一个或多个连接点上,

通知 (Advice )

  当抄表员出现在我们家门口时,他们要登记用电量并回去向电力公司报告。显然,他们必须有一份需要抄表的住户清单,他们所汇报的信息也很重要,但记录用电量才是抄表员的主要工作。      
【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第4张
file

类似地,切面也有目标——它必须要完成的工作。在AOP术语中,切面的工作被称为通知。

Spring切面可以应用5种类型的通知:


【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第5张
file

连接点 (Join point)

    电力公司为多个住户提供服务,甚至可能是整个城市。每家都有一个 电表,这些电表上的数字都需要读取,因此每家都是抄表员的潜在目标。抄表员也许能够读取各种类型的设备,但是为了完成他的工作, 他的目标应该房屋内所安装的电表。

   同样,我们的应用可能也有数以千计的时机应用通知。

   这些时机被称为连接点。

切点 (Poincut)

  如果让一位抄表员访问电力公司所服务的所有住户,那肯定是不现实 的。实际上,电力公司为每一个抄表员都分别指定某一块区域的住 户。

  类似地,一个切面并不需要通知应用的所有连接点。切点有助于缩小切面所通知的连接点的范围。
【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第6张
file

如果说通知定义了切面的“什么”和“何时”的话,那么切点就定义 了“何处” 。

有些AOP框架允许我们创建动态的切点,可以根据运行时的决策 (比如方法的参数值) 来决定是否应用通 知。     

切面 (Aspect)

 当抄表员开始一天的工作时,他知道自己要做的事情 (报告用电量) 和从哪些房屋收集信息。因此,他知道要完成工作所需要的一切东西。

切面是通知和切点的结合。通知和切点共同定义了切面的全部内容

——它是什么,在何时和何处完成其功能。

引入 (Introduction)

   引入允许我们向现有的类添加新方法或属性。 

  例如,我们可以创建一 个Auditable通知类,该类记录了对象最后一次修改时的状态。这 很简单,只需一个方法,setLastModified (Date),和一个实例变量来保存这个状态。然后,这个新方法和实例变量就可以被引入到现有的类中,从而可以在无需修改这些现有的类的情况下,让它们具有新的行为和状态。

织入 (Weaving)

    织入是把切面应用到目标对象并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中。      
【Spring实战——面向切面的Spring】1.2 Spring AOP术语(通知(Advice)、连接点(Join point)、切点(point)、切面(Aspect)、织入),第7张
file


?我们已经了解了一些基础的AOP术语,现在让我们再看看这些AOP的 核心概念是如何在Spring中实现的。

?欢迎程序员关注程序员小猿小胡工作之家,大家一起交流进步。

本文由博客一文多发平台 OpenWrite 发布


https://www.xamrdz.com/backend/3t31936009.html

相关文章: