Spring 意外调用了 AOP

Spring AOP is being invoked unexpectedly

我在我们的应用程序中为 2 个不同的包配置了 Spring AOP 来记录异常。 每个包有2种不同的配置:

<aop:config>
    <aop:aspect id="aspectLoggging" ref="abcExceptionAspect">
        <aop:pointcut id="pointCut"
            expression="execution(* com.abc.*.*(..))" />
        <aop:before method="logBefore" pointcut-ref="pointCut" />
        <aop:after-throwing method="logExceptionABC"
            throwing="error" pointcut-ref="pointCut" />
        <aop:after method="logAfter" pointcut-ref="pointCut" />
    </aop:aspect>
</aop:config>

<aop:config>
    <aop:aspect id="aspectLoggging" ref="xyzlogAspect">
        <aop:pointcut id="pointCut"
            expression="execution(* com.xyz.*.*(..))" />
        <aop:before method="logBefore" pointcut-ref="pointCut" />
        <aop:after method="logAfter" pointcut-ref="pointCut" />
        <aop:after-throwing method="logExceptionXYZ"
            throwing="error" pointcut-ref="pointCut" />
    </aop:aspect>
</aop:config>

在服务方法调用中,调用了属于以下每个包的 类 的方法:

public无效方法() {

方法1(); -> 包 abc

方法2(); -> 包 xyz

}

方法 2 中发生了一些异常,它调用了 logExceptionXYZ 方法,我们将其包装在一个通用异常中,比如 ExceptionXYZ,并进一步抛出它。

但是在这之后,logExceptionABC 方法也被调用并抛出一个通用异常,比如 ExceptionABC。

我无法理解为什么调用 logExceptionABC 方法?

如果有人知道这样的问题,请告诉我!

此致, 拉胡尔

相同的 id 被分配给两个 aop:aspect 标签。 aop:pointcut 标签也是如此。

尝试分配唯一 ID。