一、 返回通知
返回通知,顾名思义,是在方法执行完成后,并且能够得到正常返回结果时要执行的代码,使用起来也非常简单,看下面的示例:
@AfterReturning(value="execution(* com.tools.anonymization.controller.AnonymizationController.*(..))", returning="result")
public void loggingReturn(JoinPoint joinPoint, Object result){
logger.info("response result: {}", result);
}
使用@AfterReturning注解,value字段中使用切点表达式,和之前的前置通知和后置通知一样,returning字段则是绑定到该Advice要绑定的target的返回值的参数名称,并且要在切面方法中进行声明,注意方法中的参数声明和returning字段的值一致。
二、 异常通知
异常通知是在切点表达式匹配到的方法发生异常时要运行的代码,看如下示例:
@AfterThrowing(value="execution(* com.tools.anonymization.controller.AnonymizationController.*(..))", throwing="ex")
public void loggingThrowing(JoinPoint joinPoint, Exception ex){
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd EEEE HH:mm:ss");
String time = pattern.format(LocalDateTime.now());
File file = new File("exception.log