AspectJ是AOP的框架,Spring建议使用
切入点表达式(execution())
execution(修饰符 返回值 包.类.方法名(参数) throws异常)
修饰符(一般省略)
public 公共方法
* 任意
返回值(不能省略)
void 无返回
String 返回
*
包
表达式 | 描述 |
---|---|
dao | dao包 |
dao… | dao下所有子包(包含dao) |
dao.*.insert | dao下子包 |
类
表达式 | 描述 |
---|---|
Service | 指定类 |
*vice | 以vice结尾的类 |
Ser* | 以Ser开头的类 |
* | 任意类 |
方法名(不能省略)
表达式 | 描述 |
---|---|
addUser | 指定方法 |
add* | 以add开头的方法 |
*User | 以User结尾的方法 |
* | 任意方法 |
(参数)
表达式 | 描述 |
---|---|
() | 无参 |
(int) | 一个整形 |
(…) | 参数任意 |
throws一般不写
通知类型
通知 | 描述 | 应用 |
---|---|---|
before | 方法执行前执行,如果通知异常,阻止方法运行 | 校验 |
afterReturning | 方法执行后执行,可获得方法的返回值 | 数据处理,方法结果加工 |
around | 方法执行前后分别执行 | |
afterThrowing | 方法抛出异常后执行 | 包装异常信息 |
after | 无论方法是否有异常都执行 |