proceedingjoinpoint中的procee方法
时间: 2023-09-26 19:09:09 浏览: 41
ProceedingJoinPoint 是 MethodInvocation 子接口,它包含了 MethodInvocation 所有的信息,而且还提供了一个 proceed() 方法,该方法用于显式地调用目标方法。在 Around 通知中,我们可以使用 ProceedingJoinPoint 的 proceed() 方法来控制目标方法的执行流程,比如可以在方法执行前做一些操作,然后再调用 proceed() 方法执行目标方法,最后再在方法执行后做一些操作。
在使用 ProceedingJoinPoint 的 proceed() 方法时,需要注意以下几点:
1. 必须显式地调用 proceed() 方法才能继续执行目标方法。
2. proceed() 方法可以传入参数,这些参数将作为目标方法的实际参数。
3. proceed() 方法的返回值是目标方法的返回值。
4. 如果目标方法抛出异常,异常将被传递给调用者。
下面是一个示例代码:
```java
@Around("execution(* com.example.service.UserService.addUser(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("Before addUser method...");
Object result = joinPoint.proceed(); // 调用目标方法
System.out.println("After addUser method...");
return result;
}
```
在上面的代码中,我们使用 Around 通知来拦截 UserService 中的 addUser() 方法,然后在方法执行前输出一行日志,再调用 proceed() 方法执行目标方法,最后在方法执行后输出另外一行日志。