Pointcut относится ко всем методам с именем, начинающимся с

Я пытался реализовать простое выражение pointcut внутри своего кода, это мой класс Aspect.

@Aspect
public class PaymentAspect {
    
    @Autowired
    private OrdineService ordineService;
    
    @Pointcut("execution(* *..createPayment*(..))")  
    public void toVerifyCart() {} 
      
    @Before("toVerifyCart()")
    public void validateCart(JoinPoint jp) throws ServiceException, TokenStreamException {
    
         //Instructions...
    }
}

И это один из методов, перед которым я хотел бы вызвать метод validateCart()...

public String createPayment(@RequestData(paramaterName = "httpRequest") Long cartID,
        String currency, String appContext, 
        @RequestData(paramaterName = "httpRequest") HttpServletRequest request) throws ServiceException;

Единственная проблема в том, что мой код вообще не вызывает метод... Я что-то здесь не так делаю?


person L_Cleo    schedule 06.12.2019    source источник


Ответы (3)


Одна важная вещь, которую вы здесь упускаете, это @Configuration. Вы можете иметь @Component только для включения класса в качестве компонента-кандидата, но для @Aspect вам лучше аннотировать его с помощью @Configuration.

person Giorgi Tsiklauri    schedule 06.12.2019
comment
Я отвечаю сейчас, и хотя я уже разместил ответ, я собираюсь установить его как правильный ответ для любых будущих посетителей с той же проблемой! Спасибо - person L_Cleo; 12.12.2019

Попробуйте с @Pointcut("execution(* createPayment*(..))")

person Sagar Ahuja    schedule 06.12.2019

Мое плохое, по-видимому, @Aspect не подразумевает тот факт, что это компонент Spring, поэтому все, что мне нужно было сделать, это добавить @Component поверх класса.

person L_Cleo    schedule 06.12.2019