Spring AOP中仅当特定类调用时拦截方法

问题描述 投票:0回答:2

我这里有一个场景,并想获得有关如何完成它的建议。

假设我在一个名为 class A 的类中有一个方法,并且该方法是由 class Bclass C 中的 Class A 实例触发的。当 Spring AOP 中的 class B 触发该方法时,如何拦截该方法。

干杯, 蒂亚格兹

java spring jakarta-ee aspectj spring-aop
2个回答
0
投票

可以用类似下面的表情来拦截

@Around("@annotation(someAnnotation) && execution(* x.y.z.ClassB.*(..))")


将此应用于要拦截的ClassA的方法 - 您所期待的魔法在于
execution
条件。

虽然我没有尝试过,但希望它有帮助!


0
投票

这是不可能的,但如果您需要它来满足非常好的业务需求,那么实现它并不难。只需使用方法 delegate 创建 ClassD ,该方法又会调用 ClassA 方法。然后让ClassB只调用classB.delegate(),而ClassC将继续直接调用ClassA。然后将

@Around
注释从 ClassA 移动到 ClassD.delegate()

不要忘记在ClassD中发表评论,解释为什么需要这样做,以避免其他人报废:-)

© www.soinside.com 2019 - 2024. All rights reserved.