Обработка исключений и после консультации - PullRequest
0 голосов
/ 12 июня 2019

Я использую АОП с пружинной загрузкой. После успешного выполнения некоторого метода я использую совет @After в AOP для вставки базы данных. Есть один случай, когда метод генерирует исключение где-то, тогда я не хочу выполнять мой @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 голосов
/ 13 июня 2019

Пожалуйста, прочтите руководство Spring AOP, особенно главу о типах рекомендаций .В общем, всегда полезно прочитать руководство до с использованием новой технологии.; -)

  • @After всегда выполняется после завершения метода, независимо от того, было ли исключение или нет.Более специализированные версии запускают только
  • @AfterThrowing исключение или
  • @AfterReturning регулярно.Последнее - это то, что вы ищете, и оно даже дает вам доступ к возвращаемому значению, если вы хотите записать его или около того.

Ни один из этих типов рекомендаций не позволит вам обработать исключение, однако,как я также объясняю здесь .Для этого вам нужно воспользоваться @Around советом.

...