1.语法格式
动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数) 异常名)
/**
* 动作关键字:描述切入点的行为动作,例如execution表示执行到指定切入点
* 访问修饰符:public、private等,可以省略
* 异常名:方法定义中抛出指定异常,可以省略
*/
2.通配符
(1)*
单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现
例:匹配com.example包下的任意包中的IUser接口中所有e开头的带有一个参数的方法
execution(public * com.example.*.IUser.e*(*))
(2). .
多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写
例:匹配com包下的任意包中的IUser接口中所有名称为eat的方法
execution(public void com..service.IUser.eat(..))
(3)+
专用于匹配子类类型
例:匹配com.example包下的任意包中的IUser接口的实现类/子接口中所有名称为eat的方法
execution(public void com.example.*.IUser+.eat(..))
3.书写技巧
注:所有代码按照标准规范开发,否则一下技巧全部失效
(1)描述切入点通常描述接口,而不描述实现类
(2)访问控制修饰符针对接口开发均采用public描述(可省略访问控制修饰符的描述)
(3)返回值类型对于增删改类使用精准类型加速匹配,对于查询类使用*通配快速描述
(4)包名书写尽量不使用. .匹配,效率过低,常用 * 做单个包描述匹配,或精准匹配
(5)接口名/类名书写名称与模块相关的采用 * 匹配,例IUserService书写为 *Service,绑定业务层接口名
(6)方法名书写以动词进行精准匹配,名词采用 *匹配
(7)参数规则较为复杂,根据业务方法灵活调整
(8)通常不使用异常作为匹配规则