我正在将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
。任何帮助将不胜感激。
答案 0 :(得分:0)
请阅读Spring AOP手册,尤其是关于advice types的章节。通常,最好先读一本使用新技术的手册 。 ;-)
@After
总是在方法终止后执行,无论是否存在异常。仅运行更专业的版本@AfterThrowing
例外或@AfterReturning
。后者是您要查找的内容,如果您想记录返回值,它甚至可以使您访问返回值。不过,正如我也解释过here一样,这些建议类型都不会让您处理异常。为此,您需要使用@Around
建议。