是否可以禁用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
}
}
有可能吗?或者可能有其他东西不是方面?
答案 0 :(得分:1)
使用@Around
和ProceedingJoinPoint
您应该可以执行此操作。例如
@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
执行方法的实际调用。