我在这个类中有一个Class,称之为X,我已经成功地建议了一个方法从Annotated Spring调用它的method(){}。从已经在Spring中建议的方法中触发第二个建议的方法
所以,在这里,它是:
public class X {
public void method(){...}
public void method2(){...}
}
这里是我的方式,缩短课程:
@Aspect
public class MyAspect{
@Pointcut("execution(* X.method(..))")
public void methodJP(){}
@Pointcut("execution(* X.method2(..))")
public void method2JP(){}
@Around("methodJP()")
public void doMethodJP(ProceedingJoinPoint pjp) throws Exception {
pjp.proceed(); //Amongst other things!!!
}
@After("method2JP()")
public void doMethod2JP(JoinPoint jp) throws Exception {
//Do some stuff here
}
}
现在......两个连接点,我十之内很好地工作,但是,我方法,我也调用method2JP()建议的方法...当然,我的method2JP不会被触发。
有什么办法可以让这个工作?
谢谢。
我喜欢它......让我给它“旋转”! –
我觉得贫民窟这样做,但它的工作。谢谢! –
是的,它完全是贫民窟。更重要的是,它打破了AOP的全部想法,因为它迫使你修改你建议的代码。它的工作原理(我自己也用过几次“黑客”),但将第二种方法分解成另一个bean可能更优雅。它是凝聚力/碎片化以及符合Springs限制的平衡。但就像有人说,如果它有效,它很漂亮... – pap