跳至主要內容

AOP概述

向往大约 2 分钟SpringAOP

什么是AOP?

面向切面程序设计(Aspect-oriented programming,AOP,又译作面向方面程序设计剖面导向程序设计),是计算机科学open in new window中的一种程序设计思想open in new window,旨在将交叉切入关注点open in new window与作为业务主体的核心关注点open in new window进行分离,以提高程序代码的模块化open in new window程度。通过在现有代码基础上增加额外的通告(Advice)机制,能够对被声明为“点切入”(Pointcut)的代码块进行统一管理与装饰,比如说:“对所有方法名以set*开头的方法添加后台日志”。该思想使得开发人员能够将与代码核心业务逻辑关系不那么密切的功能(如日志功能)添加至程序中,同时又不降低业务代码的可读性。------摘自维基百科

使用AOP后,不仅可以将这些重复的代码抽取出来单独维护,如统一日志输出、数据校验等,还可以为如何使用这些公共代码提供丰富灵活的手段。

image-20231011154931940

AOP概念

  • Advice(通知)定义在连接点做什么,为切面增强提供织入接口。在Spring AOP中主要描述Spring AOP围绕方法调用而注入的切面行为。Advice是AOP联盟定义的一个接口,具体的接口定义在org.aopalliance.aop.Advice中。在Spring AOP的实现中,使用了这个统-一接口,并通过这个接口,为AOP切面增强的织入功能做了更多的细化和扩展,比如提供了更具体的通知类型,如BeforeAdvice、AfterAdvice、ThrowsAdvice等。
  • Pointcut(切点)决定Advice通知应该作用于哪个连接点,也就是说通过Pointcut来定义需要增强的方法的集合,这些集合的选取可以按照一定的规则来完成。在这种情况下,Pointcut通常意味着标识方法,例如,这些需要增强的地方可以由某个正则表达式进行标识,或根据某个方法名进行匹配等。
  • Advisor(通知器)完成对目标方法的切面增强设计(Advice)和关注点的设计(Pointcut)以后,需要一个对象把它们结合起来,完成这个作用的就是Advisor(通知器)。通过Advisor,可以定义应该使用哪个通知并在哪个关注点使用它,也就是说通过Advisor,把Advice和Pointcut结合起来