У меня следующая проблема с 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>