目录

 


简介

我们都知道,Spring 框架作为后端主流框架之一,最有特点的三部分就是IOC控制反转、依赖注入、以及AOP切面。当然AOP作为一个Spring

的重要组成模块,当然IOC是不依赖于Spring框架的,这就说明你有权选择是否要用AOP来完成一些业务。

AOP面向切面编程,通过另一种思考的方式,来弥补面向对象编程OOP当中的不足,OOP当中最重要的单元是类,所以万物皆对象,万物皆是

对象类。而在AOP的模块单元中,最基础的单元是切面,切面对切点进行模块化的管理。

最后再提一句:Spring当中的AOP是利用Java的代理模式实现的

 

AOP概念

让我们从一些基础的术语开始了解面向切面编程AOP,术语不是特别的直观,最好的方式就是通过文本理解+图像理解+代码实例理解

这样对于我们来说才是真正意义上的理解。

  • 切面:(Aspect) 一个关注点的模块化,就比较笼统的一个概念,关注点可能横切多个对象。若不理解请往后看图片理解,对应的注解有@Aspect。
  • 连接点:(Joinpoint) 在程序执行过程中某个特定的点,一个连接点总是代表一个方法的执行。
  • 通知:(Advice) 通知表示在一个连接点执行的具体的动作,比如After Before 表明通知的具体动作
  • 切入点:(Pointcut)通过一个表达式去表明我所定义的通知在那个地点具体执行。
  • 前置通知:(Before advice)表明在连接点执行之前执行的动作。
  • 后置通知:(After returning advice)在某个连接点完成后的通知,比如一个方法没有抛出任何异常,正常返回。
  • 环绕通知:(Around Advice) 环绕可以看作是包含前置通知和后置通知的一个通知,先了解,后面具体理解。
  • 异常通知:(After throwing advice) 在方法异常推出时候执行的通知。
  • 最终通知:(After advice) 在连接点退出时候执行的通知。不论是正常退出还是异常退出。

说了这么多,都感觉迷迷糊糊的,我们首先来看一个例子吧,通过这个例子来理解AOP切面,通过例子在具体说明

 

Springboot AOP

版本信息:Springboot 2.1.6

添加依赖 Web AOP

复制代码
        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-aop</