java @Around 怎么在@ControllerAdvice之后执行
时间: 2024-01-12 18:53:04 浏览: 78
Java面试框架高频问题2019
在 Spring AOP 中,@ControllerAdvice 通常是用来定义全局异常处理的。而 @Around 注解则是用来定义环绕通知的,可以在切点方法执行前后执行一些自定义的操作。
如果你想要在 @ControllerAdvice 执行完之后再执行 @Around,可以在 @Around 中使用 ProceedingJoinPoint.proceed() 方法来手动执行切点方法。具体实现可以参考下面的代码示例:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
// 处理异常
}
}
@Aspect
@Component
public class AroundAdvice {
@Around("execution(* com.example.controller.*.*(..))")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
Object result = null;
try {
// 在 @ControllerAdvice 执行完之后再执行 @Around
result = joinPoint.proceed();
} catch (Throwable throwable) {
// 处理异常
}
return result;
}
}
```
在上面的代码中,@Around 注解的切点是 com.example.controller 包下的所有方法。当切点方法被调用时,@ControllerAdvice 会先执行异常处理,然后再执行 @Around 中定义的环绕通知。
阅读全文