AOP概念及相关术语

一、概述

AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面
向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况
下给程序动态统一添加额外功能的一种技术。

二、相关术语

①横切关注点

从每个方法中抽取出来的同一类非核心业务。在同一个项目中,我们可以使用多个横切关注点对相关方
法进行多个不同方面的增强。
这个概念不是语法层面天然存在的,而是根据附加功能的逻辑上的需要:有十个附加功能,就有十个横
切关注点。
在这里插入图片描述

②通知

每一个横切关注点上要做的事情都需要写一个方法来实现,这样的方法就叫通知方法。

  • 前置通知:在被代理的目标方法前执行

  • 返回通知:在被代理的目标方法成功结束后执行(寿终正寝)

  • 异常通知:在被代理的目标方法异常结束后执行(死于非命)

  • 后置通知:在被代理的目标方法最终结束后执行(盖棺定论)

  • 环绕通知:使用try…catch…finally结构围绕整个被代理的目标方法,包括上面四种通知对应的所有位置

在这里插入图片描述

③切面

封装通知方法的类。
在这里插入图片描述

④目标

被代理的目标对象。

⑤代理

向目标对象应用通知之后创建的代理对象。

⑥连接点

这也是一个纯逻辑概念,不是语法定义的。
把方法排成一排,每一个横切位置看成x轴方向,把方法从上到下执行的顺序看成y轴,x轴和y轴的交叉
点就是连接点。
在这里插入图片描述

⑦切入点

定位连接点的方式。

每个类的方法中都包含多个连接点,所以连接点是类中客观存在的事物(从逻辑上来说)。

如果把连接点看作数据库中的记录,那么切入点就是查询记录的 SQL 语句。

Spring 的 AOP 技术可以通过切入点定位到特定的连接点。

切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。

三、作用

(1)简化代码:把方法中固定位置的重复的代码抽取出来,让被抽取的方法更专注于自己的核心功能,
提高内聚性。
(2)代码增强:把特定的功能封装到切面类中,看哪里有需要,就往上套,被套用了切面逻辑的方法就
被切面给增强了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AOP(Aspect-Oriented Programming)是一种编程范式,它的目的是通过将横跨多个方法和类的功能进行集中管理,并将它们与核心业务逻辑相分离,从而提高代码的复用性和可维护性。在 AOP 中,我们称这些横跨多个方法和类的功能为“切面”,而将其与核心业务逻辑相分离的过程叫做“切面化”。 下面是一些常用的 AOP 术语: 1. 切面(Aspect):横跨多个类和方法的功能,例如日志记录、安全控制、事务管理等。 2. 连接点(Join Point):程序执行的某个特定位置,例如方法调用、异常抛出等。 3. 通知(Advice):在切面的某个特定连接点上执行的动作,例如在方法调用之前记录日志。 4. 切入点(Pointcut):指定哪些连接点需要被切面化,例如所有方法调用或者特定的类方法调用。 5. 引入(Introduction):向现有的对象添加新的方法或属性。 6. 织入(Weaving):将切面应用到目标对象并创建新的代理对象的过程。 Spring 框架提供了一个 AOP 模块,可以使用基于代理的 AOP 或基于 AspectJ 的 AOP 来实现 AOP。其中,基于代理的 AOP 使用 Spring 代理来织入切面,而基于 AspectJ 的 AOP 则是通过编译时或者运行时的字节码增强来实现的。 在 Spring 中,要实现 AOP,您需要完成以下步骤: 1. 定义切面类,其中包含切入点和通知方法。 2. 配置 AOP,包括定义切面和目标对象,以及如何将切面织入目标对象。 3. 测试切面是否生效,例如调用目标对象的方法,确保切面的通知方法被正确地执行。 希望这个回答能够帮助您理解 AOP 的基本概念及在 Spring 中的实现方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值