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。
我在我们的应用程序中为 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。