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 切入点表达式/