异常处理和事后建议

时间:2019-06-12 09:06:55

标签: aop spring-aop

我正在将AOP与Spring Boot一起使用。成功执行某些方法后,我在AOP中使用@After建议进行一些数据库插入。在一种情况下,如果该方法在某处引发异常,那么我就不想执行我的@After建议调用。

我不知道是否在AOP中捕获了异常,我的事后建议方法也将执行。

@After(value = "execution(* saveUpdateMeasures(..)) and args(addMeasure)")
public void afterAdviseMeasure(JoinPoint joinPoint,AddMeasures addMeasure) throws Exception {
    logger.info("url is " + request.getRequestURL() + "?"  + request.getQueryString()); 
    saveUserLog(addMeasure.getUserId(), "add update measure",addMeasure.getReviewId()); 
}

因此,如果我的方法saveUpdateMeasures()成功执行而没有任何异常,那么只有我正在寻找执行afterAdviseMeasure。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

请阅读Spring AOP手册,尤其是关于advice types的章节。通常,最好先读一本使用新技术的手册 。 ;-)

  • @After总是在方法终止后执行,无论是否存在异常。仅运行更专业的版本
  • @AfterThrowing例外或
  • @AfterReturning。后者是您要查找的内容,如果您想记录返回值,它甚至可以使您访问返回值。

不过,正如我也解释过here一样,这些建议类型都不会让您处理异常。为此,您需要使用@Around建议。