2012-02-25 4 views
0

Я получаю эту ошибку на старте WebAPPSpring AOP выражение

Вызванный: org.springframework.beans.factory.BeanCreationException: Ошибка при создании боб с именем «org.springframework.aop.aspectj.AspectJPointcutAdvisor # 0 ': Ошибка создания бина; Вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса bean [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: конструктор сделал исключение; вложенное исключение java.lang.IllegalArgumentException: ошибка в :: 0 Формальное несвязанными в срезе точках

Вот часть XML показывает мой Pointcut в нижних

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

..... вещи пропущенных

<aop:config> 
    <aop:aspect id="bamAspectAroundID" ref="bamAspectAround"> 
     <aop:pointcut id="bamAroundMethodPointcut" expression="execution(* testBA*(..))" /> 
     <aop:around method="aspectAroundMethod" pointcut-ref="bamAroundMethodPointcut"/> 
    </aop:aspect> 
    </aop:config> 

в одном из моих классов, у меня есть фиктивная метода

public void testBAM() { 
     System.out.println("in testBAM() "); 
    } 

expressi Кажется, все в порядке. любые указатели? мы используем aspectj 1.6.2. Благодарю.

ответ

0

Я могу подтвердить, что ваше выражение AspectJ в порядке. Я сделал тестовую версию, используя то, что вы дали нам выше, и это сработало.

Я не делал этого в веб-контейнере. Я сделал это в Eclipse как автономное приложение Spring, используя инструменты AspectJ 1.6.6 и AspectJ weaver 1.6.8 и библиотеки Spring 3.1, поэтому немного опережайте ваши настройки в терминах версий.

Вот что у меня есть, что работали:

Связанный аспект баночка файлы в моем пути к классам являются:

  • org.springframework.aop-3.1.0
  • org.springframework.aspects-3.1 .0
  • com.springsource.org.aspectj.tools-1.6.6
  • com.springsource.org.aspectj.weaver-1.6.8
  • ком. springsource.org.aopalliance-1.0.0

AOP часть моей конфигурации xml выглядит точно так же, как ваша - без изменений.

я добавил следующие определения боб к той же весной XML-файл конфигурации:

<bean id="aspectTarget" class="foo.bam.Target" /> 
<bean id="bamAspectAround" class="foo.bam.BamAspectAround" /> 

Целевой класс имеет свой метод testBAM().

Код для BamAspectAround выглядит следующим образом:

public class BamAspectAround { 
    public void aspectAroundMethod(ProceedingJoinPoint joinPoint) throws Throwable { 
    System.out.println(">>> BamAspectAround Before"); 
    joinPoint.proceed(); 
    System.out.println("<<< BamAspectAround After"); 
    } 
} 

Основной метод имеет это:

Target t = (Target)ctx.getBean("aspectTarget"); 
t.testBAM(); 

И печатает минусы, что я ожидал:

>>> BamAspectAround Before 
in testBAM() 
<<< BamAspectAround After 

Примечания: Я также загрузил AspectJ 1.6.2 и поставил его ткацкую банку d его инструменты jar в мой путь к классам (удаление 1.6.8), и выше также работало, поэтому, возможно, попробуйте этот простой пример с вашей настройкой и посмотрите, какую часть вы не видите в своей развернутой в Интернете версии.