Пружина AOP острие сформирована неправильно

Исключение в потоке «main» org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'org.springframework.aop.aspectj.AspectJPointcutAdvisor # 0': создание экземпляра bean-компонента не выполнено; вложенное исключение - org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр класса bean-компонента [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: конструктор сгенерировал исключение; вложенное исключение - java.lang.IllegalArgumentException: Pointcut имеет неправильный формат: ожидается выполнение 'шаблона имени' в позиции 49 символа (* com.idol.performers.Performer.perform (..)

Что не так с моим pointcut? В книге сказано, что

(..) // means taking any arguments

мой xml:

 ...
<aop:before pointcut="execution(*com.idol.performers.Performer.perform(..))" method="takeSeats"/>
 ...

person Aubergine    schedule 20.08.2011    source источник


Ответы (2)


Попробуй это:

<aop:before pointcut="execution(* com.idol.performers.Performer.perform(..))" method="takeSeats"/>

Проблема в том, что у вас нет пробелов между * и com.idol.performers.Performer.perform(..)

person nicholas.hauschild    schedule 20.08.2011
comment
Иногда ошибки синтаксического анализа могут привести к появлению непонятных сообщений. В этом случае он думал, что подстановочный знак * был частью com.idol.performers.Performer.perform, что означает, что он ожидал, что в качестве возвращаемого типа будет этот тип, а не только *. Затем он предлагает, чтобы до того, как он увидит '(', что у него должен быть 'шаблон имени', означающий имя метода. Вот почему пространство необходимо, и это действительно нужно, он пытался сказать, лучший способ, которым он мог. - person nicholas.hauschild; 20.08.2011

Между * и com.idol.performers.Performer.perform (..) должен быть пробел.

person Harika    schedule 26.04.2015