AOP-实现步骤 & 切入点表达式语法

AI-摘要
LNotes-AI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
AOP-实现步骤 & 切入点表达式语法
Liuxz![[Pasted image 20251003194032.png]]
切入点表达式语法
@Pointcut 的值是切入点表达式,用于匹配目标方法。常用语法有:
1. execution():最常用,按方法签名匹配
语法:execution(修饰符 返回值 包名.类名.方法名(参数) 异常)
通配符:
*:匹配任意字符(如任意返回值、任意方法名)..:匹配任意层级的包或任意参数(如com.example..*表示com.example下所有子包)
示例:
1 | // 匹配 com.example.service 包下所有类的 public 方法 |
2. within():按类 / 包匹配(比 execution 更粗粒度)
1 | // 匹配 com.example.service 包下所有类的所有方法 |
3. @annotation():按方法上的注解匹配
1 | // 匹配所有标注了 @Log 注解的方法(自定义注解) |
4. args():按方法参数类型匹配
1 | // 匹配第一个参数为 String 类型的方法 |
5. bean():按 Spring 容器中的 Bean 名称匹配
1 | // 匹配名称为 "userService" 的 Bean 的所有方法 |
组合切入点
通过逻辑运算符(&&、||、!)组合多个切入点:
1 | // 匹配 service 包中且标注了 @Log 的方法 |
关键点
@Pointcut必须定义在切面类(@Aspect标注的类)中。- 切入点方法的访问修饰符通常为
public,返回值为void,方法名自定义(作为引用标识)。 - 表达式优先级:
execution>within>bean(从细到粗),按需选择合适的粒度。
通过 @Pointcut 可以清晰、灵活地定义需要增强的目标方法,是 AOP 中 “面向切面” 思想的核心实现。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果



