AspectJ Как отменить совет - PullRequest
       17

AspectJ Как отменить совет

0 голосов
/ 04 декабря 2018

У меня следующая проблема с AspectJ.Мое веб-приложение на Java включает несколько зависимостей, которые используют аспекты (содержат собственные META-INF / aop.xml внутри jar-файлов).Вот пример aop.xml:

<aspectj>
       <weaver>
              <include within="package..*"/>
       </weaver>
       <aspects>
              <aspect name="package.LoggingAspect" />
       </aspects>
</aspectj>

А вот код аспекта:

@Aspect
public class LoggingAspect {

    @Around("executeMethod() && @annotation(someAnnotation)")
    public Object execute(ProceedingJoinPoint joinPoint, SomeAnnotation a) throws Throwable {
        //some logic here
    }

    @Pointcut("execution(* *..*.*(..))")
    public void executeMethod() {
    }
}

В моем приложении мне нужно переопределить логику в соответствии с данным советом.Как я могу достичь этого?Я попытался предоставить свой собственный аспект с тем же советом (те же условия), но в этом случае применяются оба аспекта.Есть ли способ исключить ненужный аспект / совет или переопределить его?

UPD. В качестве временного решения я скопировал код LoggingAspect для себя, изменил логику advide и предоставил aop.xml со следующим:

<aspects>
    <aspect name="package.MyLoggingAspect"/>
    <exclude within="package.LoggingAspect"/>
</aspects>
...