方法执行:execution(MethodSignature)
办法调用:call(MethodSignature)
结构器施行:execution(ConstructorSignature)
构制器挪用:call(ConstructorSignature)
类始初化:staticinitialization(TypeSignature)
属性读操作:get(FieldSignature)
属性写操纵:set(FieldSignature)
破例处置施行:handler(TypeSignature)
工具始初化:initialization(ConstructorSignature)
工具事后始初化:preinitialization(ConstructorSignature)
Advice执行:adviceexecution()
pointcut 方法名称([参数]) : call|execution|staticinitialization(* 匹配到方法([参数类型]));
pointcut test(String name) : call(* com.uwo.test.HelloWord.hello(String));
before 目标方法执行前执行,前置通知
after 目标方法执行后执行,后置通知
after returning 目标方法返回时执行 ,后置返回通知
after throwing 目标方法抛出异常时执行 异常通知
around 在目标函数执行中执行,可控制目标函数是否执行,环绕通知
before([参数]) : 切点方法名称([参数]) {
/// 处理过程
}
before(String name) : test(name) {
System.out.println("before " + name);
}
after([参数]) returning ([返回值]) : 切点方法名称([参数]) {
/// 处理过程
}
after(String name) returning (String value) : test(name) {
System.out.println("after returning paramName = " + name + "; resultValue = " + value);
}
after([参数]) throwing (异常类) : 切点方法名称([参数]) {
/// 处理过程
}
after(String name) throwing (java.lang.Exception e) : test(name) {
System.out.println("after throwing paramName = " + name + "; Exception = " + e.getMessage());
}
after([参数]) : 切点方法名称([参数]) {
/// 处理过程
}
after(String name) : test(name) {
System.out.println("after " + name);
}
- 环绕通知语法 around 无法与 (before,after)同时存在
返回类型 around([参数]) : 切点方法名称([参数]) {
/// 处理过程
return 值;
}
String around(String name) : test(name) {
System.out.println("[around === start]");
String value = proceed(name);
System.out.println("[around === end]");
return value;
}