Я столкнулся с странным поведением с использованием AspectJ для pointcut с использованием моей пользовательской аннотации.Аспект с использованием pointcut = @ аннотации для @AfterTrowing работает дважды
Задание Pointcut я использую:
@AfterThrowing(pointcut="@annotation(com.core.meta.NotifyOnFailure)", throwing="ex")
У меня есть проблема в том, что мой аспект выполняется два раза, но если я изменить Pointcut к:
@AfterThrowing(pointcut="execution(* sendAndReceive(..))", throwing="ex")
Он работает один раз, как и ожидалось.
Единственный метод, который я есть, что поднимает аспект заключается в следующем:
@NotifyOnFailure // I want to use this annotation to raise the aspect once
public String sendAndReceive(String serviceUrl)
{
String responseXml = "...";
try
{
throw new Exception("test...");
}
catch(Exception x)
{
ExternalExecutionException ex = new ExternalApiExecutionException("Service failed");
throw ex;
}
finally
{
...
}
return responseXml;
}
Любая идея о том, почему мой аспект выполняется в два раза при использовании моего аннотаций и только один раз, когда я использую execution
Pointcut?
Большое спасибо за указание на это, вы очень помогли мне в этом. +1 –
Нет проблем. Продолжайте грузоперевозки с AspectJ, это того стоит. :) – sheltem