import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyDemoLogginAspect {
@Before("execution(* * add*())")
public void beforeAddAccountAdvice(){
System.out.println("Executing before");
}
}
我因以下原因而获得例外:
java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 14
execution(* * add*())
我需要知道为什么上面的切入点表达式是错误的?
注意:此错误是在执行主类后出现的,但是主类没有任何问题,而是在切入点表达式中
最佳答案
切入点表达式不正确。
从documentation。
执行表达式的格式为:
execution(modifiers-pattern? ret-type-pattern
declaring-type-pattern?name-pattern(param-pattern)throws-pattern?)
适用于您的示例的正确格式是
@Before("execution(* add*())")
Modifys-pattern是可选的,不能为通配符(*),并且应为public或protected之一。详细信息here
所以切入点表达式也可能是
@Before("execution(public * add*())")
还要注意,切入点表达式过于笼统,可能会导致不希望的结果,因为kriegaex在此answer中指出了另一个SO问题
关于java - 异常:java.lang.IllegalArgumentException:切入点格式不正确错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59695857/