我在AspectJ中遇到以下问题。我的Java Web应用程序包括使用方面的多个依赖项(在jar中包含它们自己的 META-INF / aop.xml )。这是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>