禁用方面的实际方法调用

时间:2016-11-25 19:09:50

标签: java aop

是否可以禁用actuall方法的呼叫。我想要实现的是创建方面,它将在我的方法之前调用,如果某些语句为真,那么根本不调用main方法。

使用伪代码就是这样的

public class MyClass {

  public void myMethod() {
     //implementation
  }
}

@Aspect
public class MyAspect {
  @Before("execution(* MyClass.myMethod(..))")
  public void doSth() {
    //do something here but if some statement is true then don't call myMethod
  }
}

有可能吗?或者可能有其他东西不是方面?

1 个答案:

答案 0 :(得分:1)

使用@AroundProceedingJoinPoint您应该可以执行此操作。例如

  @Around("execution(* MyClass.myMethod())")
  public void doSth(ProceedingJoinPoint joinpoint) throws Throwable {

     boolean invokeMethod = false; //Should be result of some computation
     if(invokeMethod)
     {
         joinpoint.proceed();
     }
     else
     {
         System.out.println("My method was not invoked");
     }
  }

我在这里将invokeMethod布尔值设置为false,但它应该是一些计算的结果,您可以这样做来确定是否要执行某个方法。 joinPoint.proceed执行方法的实际调用。