AOP 切入点表达式
AOP 概念:AOP
切入点:要增强的方法
切入点表达式: 要进行增强的方法的描述方式
一、切入点表达式的标准格式
动作关键词(访问修饰符 返回值 包名·类/接口名·方法名(参数) 异常名)
1 | |
- 动作关键词:描述切入点的行为动作,例如
execution标识执行到指定切入点 - 访问修饰符:
public,private等,可以省略 - 返回值
- 包名
- 类/接口名
- 方法名
- 参数
- 异常名:方法定义中抛出指定异常,可以省略
二、切入点通配符
可以使用通配符描述切入点,快速描述
*: 单个独立的任意符号,可以独立出现,也可以作为前缀或后缀的匹配符出现
1 | |
匹配 cn.pangcy包下的任意包中的 UserService 类或接口中,所有 1 find 开头且带有一个参数的方法
..: 多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写
1 | |
匹配 cn 包下的任意包中的 UserService 类或接口中所有形成为 findById 方法
+: 专用于匹配子类类型
1 | |
三、书写技巧
- 所有代码按照标准规范开发,否则一下技巧将会失效
- 描述切入点通常描述接口,而不描述实现类
- 访问控制修饰符针对接口开发均采用
public描述(可省略访问控制修饰符描述) - 返回值类型对于增删改查类使用精准类型加速匹配,对于查询类使用==
*通配==快速描述 - 包名书写==尽量不使用
..匹配==, 效率过低,常用*做单个描述匹配,或精准匹配 - 接口名/类名书写名称与模块相关的==采用
*匹配==,例如UserService书写成*Service,绑定业务层接口名 - 方法名书写以动词进行精确匹配,名词采用
*匹配,例如getById书写成getBy*,selectAll书写成selectAll - 参数规则较为复杂,根据业务方法灵活调整
- 通常不使用异常作为匹配规则
AOP 切入点表达式
https://blog.pangcy.cn/2023/04/10/后端编程相关/java/spring/AOP 切入点表达式/