0


【Spring】AOP

❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:Spring框架系列

文章目录

AOP

什么是Spring AOP

  • AOP是面向切面编程。OOP是面向对象编程,AOP是一种思想,它是针对程序中的某一类的功能做统一的处理。比如用户登录权限的校验,没学AOP之前,我们所有需要判断用户登录的页面,AOP可以自动帮我们实现登录验证,不再需要每个方法中都写相同的用户登录的验证了。
  • Spring AOP是一种框架,提供了一种对AOP 思想的实现,他们的关系和IoC与DI类似。
  • 利用AOP可以对各个业务进行隔离, 从而是得业务各逻辑之间的耦合性降低, 提高了程序的可重用性, 同时提高开发效率

为什么要用AOP?

  • 之前处理用户登录的状态验证,每个Controller都要写一遍用户登录,然而当你的功能越来越多的时候,你要写的登录验证也越来越多,而这些方法都是相同的,对于这种功能统一,且使用的地方较多的功能,就可以考虑AOP来统一处理
  • 除了统一的用户登录的判断之外,AOP还可以实现:统一日志记录,统一方法执行时间的统计,统一的返回格式设置,统一的异常处理,事务的开启和提交

AOP的组成

在这里插入图片描述

  • 切面:切面由切点和通知组成,针对于某一个功能的具体定义(相当于一个类),某一个功能可能是登录验证功能(一个AOP一个数据库),也可能是日志记录功能,一个功能对应一个切面。
  • 切点:切点是切面中的某一个方法,用户登录验证方法就是一个切点。
  • 连接点:调用这些切点(方法)的页面就是连接点
  • 通知: 切点是一个空方法,通知是具体实现了这个方法,通知相当于切点的方法体。通知包括:前置通知,后置通知,返回之后通知,抛异常后的通知,环绕通知在这里插入图片描述

Spring AOP的实现

  1. 添加Spring AOP框架支持
  2. 定义切面和切点
  3. 定义通知

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

定义切面和切点

  • 类注解:@Aspect,@Component
  • 方法注解:@Pointcut
@Component@Aspect//定义切面publicclassUserAspect{@Pointcut("execution(* com.example.demo.controller.UserController.*(..))")publicvoidpointcut(){}}

定义通知Advice(5类)

  • 通知是描述拦截执行的时机和具体的方法实现
  • 注意环绕通知的写法,可以记录执行接口的时间
@Component@Aspect//定义切面publicclassUserAspect{@Pointcut("execution(* com.example.demo.controller.UserController.*(..))")publicvoidpointcut(){}// 前置通知(要带一个括号)@Before("pointcut()")publicvoiddoBefore(){//业务代码System.out.println();System.out.println("执行了前置通知");System.out.println();}}@Around("pointcut()")publicObjectdoAround(ProceedingJoinPoint joinPoint){Object result =null;//执行前置业务代码System.out.println("执行环绕通知的前置方法");try{//执行(拦截的)业务方法
            result = joinPoint.proceed();}catch(Throwable throwable){
            throwable.printStackTrace();}//执行后置业务代码System.out.println("执行环绕通知的后置方法");return result;}

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章

标签: spring java 后端

本文转载自: https://blog.csdn.net/partworld/article/details/125239753
版权归原作者 亚太地区百大最帅面孔第101名 所有, 如有侵权,请联系我们删除。

“【Spring】AOP”的评论:

还没有评论