Я просто играю с AspectJ (1.6) с Spring (2.5), но, похоже, он не работает должным образом. я создал свой «beans.xml» с помощью:Spring AOP пропускает что-то
<aop:aspectj-autoproxy/>
<bean id="testBean1" class="apackage.MyClass">
<bean id="aopBean1" class="apackage.AfterReturningExample"/>
с правильными пространствами имен, установленных и некоторыми другими бобами, не имеющее значения. Я использую простой компонент для тестирования советов:
package apackage;
@Aspect
public class MyClass {
public MyClass()
{
}
public Boolean testAspectJ()
{
System.out.println("returning from MyClass.testAspectJ()");
return false;
}
}
И это АОП боб:
package apackage;
@Aspect
public class AfterReturningExample {
public AfterReturningExample(){}
@AfterReturning("execution(* apackage.MyClass.*(..))")
public void test() throws Exception{
System.err.println("\n\n#### After Returning MyClass.testAspectJ()\n\n");
}
}
И, наконец, это тестирование кода (в основном методе):
ApplicationContext ctx = new ClassPathXmlApplicationContext("apackage/beans.xml");
MyClass bean = (MyClass) ctx.getBean("testBean1");
bean.testAspectJ();
Только выходные данные:
returning from MyClass.testAspectJ()
Самое странное в том, что если я использую для срезом точек:
"execution(public * *(..))"
журнал показывает System.out.println класса AfterReturningExample. Что мне не хватает?
Решение найдено! –