Spring AOP详解

目录

什么是Spring AOP?

AOP的基础组成

切面(Aspect)

切点(Pointcut)

连接点(Join Point)

通知(Advice)

实现Spring AOP

1. 添加Spring AOP框架

2. 定义一个切面和切点

3. 定义相关的通知


什么是Spring AOP?

像IOC和DI一样, AOP也是一种思想, 简单地说Spring框架是实现IOC思想的一个工具, 同样的  Spring AOP 一个实现了AOP思想的一个工具

AOP(Aspect Oriented Programming)---直译过来就是面向切面编程, 它是对某一类事情的集中处理思想, 是对OOP(面向对象编程)思想的补充和完善

怎么来理解呢, 举个例子博客系统中用户登录权限的验证, 当我们在系统中进行发布文章, 修改文章, 删除文章等功能时, 为了系统的安全总会在执行这些功能时进行用户信息的验证, 其中最初级的一种实现方式也是一些新手会选择的方法: 强撸,直接选择在每个业务代码里都写上验证用户信息相应的代码, 非常明显这样的做法是最低级的, 也是最麻烦的; 当我们学习一段时间后有了一定的经验, 学习了封装思想,OK对相同功能的代码可以进行封装操作, 用到时候只需要调用即可, 显然这样不仅可以减少代码量, 代码的可维护性也有了提高; 现在我们有了更高级的方式, 就是实现AOP思想, 在业务代码中只需要完成业务代码即可, 我们只需要针对校验用户信息这个功能实现一个AOP, 在执行业务代码时对需要进行用户校验的业务代码进行拦截, 这样做可以更进一步的降低代码的耦合性, 提高代码的可维护性

AOP的基础组成

AOP由切面 (Aspect), 切点(Pointcut), 通知(Advice), 连接点(Join Point) 组成

切面(Aspect)

切面: 定义当前AOP业务类型 (当前过滤器的功能是啥)

切点(Pointcut)

切点: 定义当前AOP的拦截规则 (需要拦截的业务代码路径)

连接点(Join Point)

连接点: 需要AOP进行的拦截的地方

通知(Advice)

通知: 定义什么时候, 做什么事, 是具体功能的实现

         1. 前置通知: 在需要进行的拦截的业务代码执行之前执行的通知(事件)

         2. 后置通知: 在需要进行的拦截的业务代码执行之后执行的通知(事件)

         3. 返回之后通知: 在拦截代码返回数据之后执行的通知(事件)

         4. 抛出异常之后的通知: 在拦截代码抛出异常之后执行的通知(事件)

         5. 环绕通知: 在拦截方法执行前后都执行的通知(事件)


实现Spring AOP

1. 添加Spring AOP框架

在pom.xml中添加如下配置

<!-- 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>

2. 定义一个切面和切点

 其中func方法为空方法, 可以不要方法体, 此处的方法名只起到标识的作用, 标识下面的通知方法具体指的是哪一个切点, 因为切点有很多个

3. 定义相关的通知

通知定义的是被拦截的方法具体要执行的业务,比如用户登录权限验证方法就是具体要执行的业务Spring AOP 中,可以在方法上使用以下注解,会设置方法为通知方法,在满足条件后会通知本方法调用

前置通知使用@Before: 通知方法会在目标方法调用之前执行

后置通知使用@After: 通知方法会在目标方法返回或者抛出异常之后调用

返回之后通知使用@AfterReturning: 通知方法会在目标方法返回后调用

抛异常后通知使用@AfterThrowing: 通知方法会在目标抛出异常之后调用

环绕通知使用@Around: 通知包裹了被通知的方法, 在被通知的方法通知之前和调用之后执行自定义的行为

具体实现一个:

形如上方拦截成功, 其它的通知也如此这般, 经过上述的步骤我们就可以实现AOP了 , 以上!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值