我使用的是带spring Boot 的AOP。在一些方法成功执行之后,我在AOP中使用@After通知来插入一些数据库。有一种情况是,如果方法在某个地方抛出异常,那么我就不想执行我的@After
通知调用。
我不知道如果我在AOP中捕捉到异常,我的after advice方法是否会执行。
@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条答案
按热度按时间ee7vknir1#
请阅读Spring AOP手册,尤其是关于建议类型的章节。一般来说,在使用新技术之前阅读手册总是一个好主意。- )
@After
总是在方法终止后执行,无论是否有异常。@AfterThrowing
异常或@AfterReturning
定期。后者是你正在寻找的,它甚至让你访问返回值,如果你喜欢记录它左右。但是,这些通知类型都不能让您处理异常,正如我还解释了here一样,您需要使用
@Around
通知。