有关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两大重点工作:

  • 如何通过切点和增强定位某一个连接点
  • 如何在增强中编写切面的代码。
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值