阅读相关AOP博客对AOP使用实操后进行相应的使用补充

本文深入探讨了Spring中的AOP概念,包括连接点(JoinPoint)如何为方法参数注入,各处理时机(before、around、after、afterThrowing)的执行顺序,以及围绕通知(Around)的使用。详细阐述了如何通过方法路径表达式和注解定义切点,并解释了过滤器、拦截器、解析器与AOP在请求处理链中的位置。

阅读来源:完美的AOP演示与讲解博客

各个处理时机执行示例参考:AOP处理时机代码示例

来源博客阅读概述:Spring中的AOP具体应用有权限校验、日志记录、统计等与系统业务代码关系不大的场景。AOP有两大部分:一是连接点joinPoint;二是切面Aspect。其中切面Aspect又包含了切点PointCut与通知处理Advice。通知处理Adivce包含处理时机(before、around、afterReturning、after、afterThrowing)与处理内容。

 补充内容如下:

1、JoinPoint的参数注入获取:

由于AOP涉及到的相关组件已交由容器管理,JoinPoint连接点能在不同的时机中为方法参数所注入,并不仅限于Around。通过Signature可以获取到连接点的方法相关签名信息,如methodName。

2、各处理时机的执行顺序:

before--》method---》afterReturning --》after --》afterThrowing

以上的处理时机处理顺序并不冲突,且对于连接点是controller控制器其中的mapping映射方法,这些处理方法的返回值与MVC流程无关。

3、使用Around:

一旦使用了Around,那么其他的处理时机的处理内容是否执行取决于Around方法是否执行了切点方法,即

joinPoint.proceed();

,包括对异常的处理AfterThrowing。若确认执行,那么其他处理时机执行顺序相当于在嵌入Around方法中。另外,Around方法的返回值作为整个MVC流程的返回值。

4、关于连接点作为切点的两种方式

连接点是程序中可以作为切点的方法。@Pointcut获取定义切点有两种方式:

一、@Pointcut("execution(* com.example.controller..*.*(..))")通过方法地址路径表达式获取作为切点的连接点;

二、@Pointcut("@annotation(org.springframework.web.bind.annotation.GetMapping)")通过相关注释获取标注了该注释的切点的连接点。

注意@Pointcut标注与方法上,方法为无返回值、无参数的空方法。

5、过滤器、拦截器、解析器、AOP处理顺序

过滤器依赖servlet容器,在外部。拦截器依赖Spring容器,在中部。解析器在方法运行前解析所需解析参数,在中后部。AOP通过动态代理织入方法执行前后,最贴近方法执行。

故请求执行顺序Filter---》interceptor---》resolver---》AOP---》method,响应则倒过来。

当前版本:1.3

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅尝即止何来突破

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值