AOP-流程 & AOP-连接点 & AOP-@Pointcut()

AI-摘要
LNotes-AI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
AOP-流程 & AOP-连接点 & AOP-@Pointcut()
Liuxz单切面:
正常链路:前置通知 -> 目标方法执行 -> 返回通知 -> 后置通知
异常链路:前置通知 -> 目标方法执行 -> 异常通知 -> 后置通知
多切面:
按照切面优先级,@Order(1) 指定优先级,数字越小优先级越高,越是代理最外层
后置像finally一样一定执行
![[2025-10-10_19-34-37-0.png]]
JoinPoint连接点信息,
/**
- 告诉Spring当前类是一个切面类
- 告诉Spring,以下通知方法,何时何地被调用
- 何时?
- @Before 在目标方法之前运行
- @After 在目标方法之后运行
- @AfterReturning 运行在目标方法正常返回之后
- @AfterThrowing 运行在目标方法抛出异常之后
- @Around 以上的四合一,可以修改返回值
- 何地?
- execution(public * com.atguigu.spring.aop..(..))
*/
@Pointcut 是 Spring AOP 中用于定义切入点的注解,它可以精确指定哪些方法需要被增强(织入通知逻辑)。其核心作用是集中定义切入点表达式,供 @Before、@After、@Around 等通知注解复用,避免重复编写表达式。
基本用法
- 定义切入点:在一个==空方法==上使用
@Pointcut,方法体通常为空(仅作为切入点的 “标识”)。 - 引用切入点:在通知注解中通过方法名引用该切入点。
1 | import org.aspectj.lang.annotation.Aspect; |
对于@Around的注意
如图所示,此时如果目标方法异常,环绕通知给出的是 异常通知,而日志通知则给出的是 返回通知,并没有报错。
原因:
此时,环绕通知 对于 日志 来说,就相当于目标方法,也就是说,环绕通知 是 日志的目标方法,环绕通知 此时用 try-catch 把异常“吞”掉了,所以对于 日志来说,是没有异常的。
所以,为了 多切面情况下异常感知链路是通的,建议环绕通知一定抛出异常。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果




