Spring Boot进阶:原理、实战与面试题分析
上QQ阅读APP看书,第一时间看更新

3.1.1 Spring AOP核心概念

AOP只是一种设计理念,虽然概念不复杂,但实现过程不那么简单。而Spring作为AOP的一款具体实现框架,也提供了自身的一些设计思想和编程组件。本小节将对Spring AOP中的核心概念展开讨论,为下一小节的使用示例提供基础。

为了理解AOP的具体实现过程,我们首先需要引入一组特定的术语,包括连接点(JoinPoint)、通知(Advice)、切点(PointCut)以及切面(Aspect)。

在AOP中,连接点表示应用执行过程中能够插入切面的一个点。这种连接点可以是方法调用、异常处理、类初始化或对象实例化。

所谓通知,描述的是切面何时执行以及如何执行对应的业务逻辑。通知有很多种类型,比方说在方法执行之前、之后、前后及执行完成时进行通知,或者在方法执行异常时进行通知。

请注意,通知不一定应用于所有连接点,所以我们引入了切点的概念。切点是连接点的集合,用于定义必须执行的通知。因此切点为组件在应用程序中执行具体的通知提供了细粒度控制的方法。

最后,通知和切点组合在一起就构成了切面。切面用于定义应用程序中的业务逻辑及其执行的位置。

以上概念比较抽象,我们通过图来使这些概念具象化,如图3-3所示。

061-1

图3-3 AOP核心概念示意图

Spring框架对图3-3中的概念都进行了实现,但也有自身的一些限制。例如,连接点只支持方法的调用。针对通知,Spring专门提供了一组注解,包括@Before、@After、@Around、@AfterReturning和@AfterThrowing等,分别对应方法执行的各个阶段。切点的定义是和业务流程执行紧密相关的,所以在Spring中,可以通过使用各种灵活的表达式来定义切点。最后,Spring专门提供了一个@Aspect注解来定义切面。