Исключение: java .lang.IllegalArgumentException: Pointcut не является правильно сформированной Ошибка? - PullRequest
0 голосов
/ 11 января 2020
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*()) 

Мне нужно знать, почему вышеприведенное выражение pointcut неверно?

Примечание. Эта ошибка появляется после выполнения. основного класса, но в главном классе нет ничего плохого, и ошибка вместо этого находится в выражении pointcut

1 Ответ

3 голосов
/ 11 января 2020

Неверное выражение pointcut.

Из документации .

Формат выражения выполнения:

execution(modifiers-pattern? ret-type-pattern 
declaring-type-pattern?name-pattern(param-pattern)throws-pattern?)

Правильный формат для Ваш пример для работы:

@Before("execution(* add*())")

Шаблон модификаторов является необязательным и не может быть подстановочным знаком (*) и должен быть один из следующих: c или защищенный. Подробности здесь

Таким образом, выражение pointcut также может быть

@Before("execution(public * add*())")

Также обратите внимание, что ваше выражение pointcut является слишком глобальным и может привести к нежелательному результату, так как kriegaex указывает на этот ответ на другой вопрос

...