Я могу подтвердить, что ваше выражение AspectJ в порядке.Я сделал тестовую версию, используя то, что вы дали нам выше, и это сработало.
Я не делал этого в веб-контейнере - я делал это в Eclipse как отдельное приложение Spring с использованием инструментов AspectJ 1.6.6 и библиотек AspectJ weaver 1.6.8 и Spring 3.1, так что немного впереди ваших настроекс точки зрения версий.
Вот что у меня сработало:
Файлы JAR, связанные с аспектами, в моем classpath:
- 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
- com.springsource.org.aopalliance-1.0.0
AOP-часть моей конфигурации xml выглядит точно так же, как ваша - без изменений.
Я добавил следующие определения bean-компонентов в тот же конфигурационный XML-файл spring:
<bean id="aspectTarget" class="foo.bam.Target" />
<bean id="bamAspectAround" class="foo.bam.BamAspectAround" />
В классе Target есть метод 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 и поместил его jar-файл weaver и jar инструментов в мой classpath (удаляя 1.6.8), и вышеописанное также сработало, поэтому, возможно, попробуйте этот простой пример снастройки и посмотрите, чего вам не хватает в развернутой в сети версии.