开发中,多个接口处理业务时,若发生异常,希望可以统一处理这些异常,这时就可以把异常抛出,使用切面统一处理.
使用Springboot开发,不需要其他配置.导入依赖即可
<!--aop依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
@Around
可以手动调用切点方法,这样就可以在接口方法执行的前,中,后进行相关的业务处理.
@Aspect
@Slf4j
@Component
public class ExceptionAspect {
@Around("execution(* com.mlsama.springbootoracle.service..*.*(..))")
public Object exceptionHandle(ProceedingJoinPoint joinPoint){
Object result = null;
try {
//获得类名
String clazzName = joinPoint.getTarget().getClass().getSimpleName();
//获得方法名
String methodName = joinPoint.getSignature().getName();
//获得参数列表
Object[] args = joinPoint.getArgs();
log.info("clazzName:{},methodName:{},args:{}",clazzName,methodName,args.length > 0 ? args[0] : null);
//执行切点,就是* com.mlsama.springbootoracle.service..*.*(..)表达式匹配的方法
result = joinPoint.proceed();
} catch (Throwable e) {
log.error("发生异常:{}",e);
//处理异常
ExceptionHandler.handle(e);
}
return result;
}
}