SpringAOP切点execution表达式解析
一、Aspect切点语法
execution(方法的修饰符 方法的返回值类型 方法所属的类 方法名 方法中参数列表 方法抛出的异常)
- 方法的修饰符
支持通配符*
,可以省略;
- 方法的返回值类型
支持通配符*
,表示所有返回值,不可以省略;
- 方法所属的类
支持通配符*
,可以省略;
- 方法名
- 支持通配符
*
,表示所有方法,不可以省略;
- 方法中参数列表
- 支持通配符
*
,不可以省略; - ()表示一个无参方法,(…)表示任意数量和类型的方法,其它任意数量是指零个,一个,多个;
- (*)一个任意类型的方法;
- (*,Integer)接受二个参数的方法,第一个可以是任意类型,第二个必须是Integer类型;
- 如果是自定义类型,必须写全路径类名。
- 方法抛出的异常
- 支持通配符
*
,可以省略。
二、定义多个切点
- 使用||,or表示或;
- 使用&&, and表示与;
- 使用not, !表示非。
三、execution表达式示例
- 匹配指定包下所有类方法
execution(* com.baidu.dao.*(..))
- 匹配所有save开头的方法
execution(* save*(..))
- 匹配指定类所有方法
execution(* com.baidu.service.UserService.*(..))
- 匹配实现特定接口所有类方法
execution(* com.baidu.dao.GenericDAO+.*(..))
- 匹配指定包以及及指定包下面的子包所有类
execution(* com.baidu.dao..*(..))