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..*(..))
本文介绍了SpringAOP中用于定义切点的execution表达式,包括方法修饰符、返回值类型、类名、方法名、参数列表和异常的匹配规则。同时,讲解了如何使用通配符以及定义多个切点的逻辑操作,如or,and,not。示例展示了匹配不同场景的execution表达式,如指定包下的所有类方法、特定名称的方法、指定类的所有方法等。

2063

被折叠的 条评论
为什么被折叠?



