我这里有一个场景,并想获得有关如何完成它的建议。
假设我在一个名为 class A 的类中有一个方法,并且该方法是由 class B 和 class C 中的 Class A 实例触发的。当 Spring AOP 中的 class B 触发该方法时,如何拦截该方法。
干杯, 蒂亚格兹
可以用类似下面的表情来拦截
@Around("@annotation(someAnnotation) && execution(* x.y.z.ClassB.*(..))")
execution
条件。
这是不可能的,但如果您需要它来满足非常好的业务需求,那么实现它并不难。只需使用方法 delegate 创建 ClassD ,该方法又会调用 ClassA 方法。然后让ClassB只调用classB.delegate(),而ClassC将继续直接调用ClassA。然后将
@Around
注释从 ClassA 移动到 ClassD.delegate()
不要忘记在ClassD中发表评论,解释为什么需要这样做,以避免其他人报废:-)