0


认识 spring AOP (面向切面编程) - springboot


前言

本篇介绍什么是spring AOP, AOP的优点,使用场景,spring AOP的组成,简单实现AOP 并 了解它的通知;如有错误,请在评论区指正,让我们一起交流,共同进步!


文章目录

本文开始

1. 什么是spring AOP?

AOP: 面向切面编程,也就是面向某一类编程,对某一类事情进行统一处理;

spring AOP: 是实现了AOP这种思想的一个框架;

AOP优点:

  • 减少重复代码:对一类同样的工作统一处理;
  • 提高开发效率:同上;

spring AOP 使用场景

使用:统一用户登录判断; 统一异常处理; 统一日志等等;

认识AOP的组成

  • 切面- Aspect:AOP定义的是一个事件;例如:登录操作的整个过程;- 某个具体功能实现的过程 - 一共类;
  • 切点 - Pointcut:AOP定义的具体规则;例如:验证登录的 方法;- 实现功能的方法 - 类中的方法定义;
  • 连接点 - Join Point:可能触发切点的所有点;- 可能调用功能的某个方法的点;
  • 通知 - Advice:AOP具体执行的方法;例如:方法的具体实现;- 代码具体实现 - 类中方法的具体实现; ① 前置通知 @Before ② 后置通知 @After ③ 环绕通知 @Around ④ 异常通知 @AfterThrowing ⑤ 返回通知 @AfterReturning

通知执行的顺序:环绕通知之前 > 前置通知 > 方法 > 方法返回后通知 > 后置通知 > 环绕通知之后

在这里插入图片描述

2. 实现spring AOP - 认识各种通知

2.1 在springboot项目中,原有依赖 + 添加spring AOP 依赖

2.2 实现过程 定义切面 + 定义切点 + 定义通知

  • 定义切面 -> 定义类
@Aspect // 定义切面
@Component //随框架启动,注入到容器中
public class UserAspect {//定义切点 + 通知...}
  • 定义切点 -> 定义方法
//定义切点, 对UserController进行拦截
    @Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
    public voidpointcut(){}//空方法:方法名用于标识

切点表达式:识别该包下类下的任意方法,参数不限;

在这里插入图片描述

  • 定义通知:切点的方法名,写在通知参数中,用于识别是哪个切点的通知;(想了解具体的 百度 - AspectJ 语法)
//前置通知
    @Before("pointcut()")
    public voiddoBefore(){
        System.out.println("执行前置通知!");}//后置通知
    @After("pointcut()")
    public voiddoAfter(){
        System.out.println("执行后置通知!");}//后置返回后的通知
    @AfterReturning("pointcut()")
    public voiddoAfterReturn(){
        System.out.println("执行返回后通知!");}//抛出异常后通知
    @AfterThrowing("pointcut()")
    public voiddoAfterThrow(){
        System.out.println("执行抛异常后的通知!");}//环绕通知//使用环绕通知:例如:统计时间,就可以使用环绕通知,将通知前 与 通知后 放在一起
    @Around("pointcut()")//ProceedingJoinPoint:获取连接点;执行 =》返回框架,执行
    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("执行环绕通知之前!");
        Object result = joinPoint.proceed();
        System.out.println("执行环绕通知之后");return result;}

总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

标签: spring spring boot java

本文转载自: https://blog.csdn.net/m0_69119792/article/details/132127577
版权归原作者 Wpa.wk 所有, 如有侵权,请联系我们删除。

“认识 spring AOP (面向切面编程) - springboot”的评论:

还没有评论