一、了解什么是AOP
1.AOP可以干嘛?
AOP可以:
- 统一完成登录验证
- 统一异常处理
- 统一返回的数据的格式
- 事务的开启和提交
- ......
2.为什么要有AOP
举个例子: 我们去乘坐高铁的时候需要过安检(检查乘客是否带有违禁物品),也就是在进入候车厅之前有一次,直到上车都不用再重复检查一次了.
写程序的时候也一样,我们可以把重复的环节统一用一段代码完成就行了.
例如:我们在做博客系统其中的修改个人信息,修改博客等业务之前都需要验证是否为本人操作,为了不重复写这段相同代码,我们就可以使用AOP思想,将代码统一提出来,让Spring在合适的时候自动调用这段代码就行了.
3.AOP的组成
AOP全称Aspect Oriented Programming,意思是面向切面编程.他有几个比较重要的组成:连接点,切点,切面,通知等组成.
切面:大概意思是某个功能的代码的集合
连接点: 连接点是一个比较抽象的概念,意思是在一段业务代码中,可能会插入切面的某个或者某几个地方.
切点:意思是在一段业务代码中明确会插入切面的连接点.
理联系实际解连接点和切点: 连接点就像很多的高速路口,但是你要下高速路的路口只有一个,那么那些高速路口就都可以叫做连接点,那个你要下的路口就叫做切点.
通知: 通知是切面功能的实现,规定切面要做什么,在什么时候执行的统一,通知有以下几个
- 前置通知(@Before): 通知在目标方法执行之前执行.
- 后置通知(@After): 通知在目标方法执行完(返回)之后或者在执行目标方法抛出异常之后执行
- 抛出异常后的通知(@AfterThrowing): 在目标方法抛出异常之后执行.
- 返回后的通知()@AfterReturning): 通知在目标方法执行完(返回)执行.
- 环绕通知()()@Around): 通知在目标方法执行之前与执行完之后都会执行.
二、实现AOP
- 添加AOP框架支持
- 定义切点和切面
- 定义通知
<-- Spring AOP框架支持 -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-bo
ot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
最后只要访问拦截规则下的路由(路径)就能拦截到了