I am experimenting with the Spring integration for Aspectj as documented at http://static.springsource.org/spring/docs/2.5.x/reference/aop.html#aop- using-aspectj and have come across a problem.
If I alter the class invocation to override the method that I want to instrument, the method is no longer detected. So, my class is: package foo; public class EntitlementCalculationService { public void calculateEntitlement() { System.out.println("executing"); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } } My aspect is: package foo; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Pointcut; import org.springframework.util.StopWatch; @Aspect public class ProfilingAspect { @Around("methodsToBeProfiled()") public void profile(ProceedingJoinPoint pjp) throws Throwable { StopWatch sw = new StopWatch(getClass().getSimpleName()); try { sw.start(pjp.getSignature().getName()); pjp.proceed(); } finally { sw.stop(); System.out.println(sw.prettyPrint()); } } @Pointcut("execution(public * foo..*.*(..))") public void methodsToBeProfiled(){} } And my code to test is: package foo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public final class Main { public Main() { ApplicationContext ctx = new ClassPathXmlApplicationContext("/beans.xml", Main.class); EntitlementCalculationService entitlementCalculationService = new EntitlementCalculationService();{ entitlementCalculationService.calculateEntitlement(); } public static void main(String[] args) { new Main(); } } This gives the correct output: [java] StopWatch 'ProfilingAspect': running time (millis) = 201 [java] ----------------------------------------- [java] ms % Task name [java] ----------------------------------------- [java] 00201 100% calculateEntitlement However, if I change the test code to override the calculateEntitlement method like this: package foo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public final class Main { public Main() { ApplicationContext ctx = new ClassPathXmlApplicationContext("/beans.xml", Main.class); EntitlementCalculationService entitlementCalculationService = new EntitlementCalculationService(){ @Override public void calculateEntitlement() { System.out.println("test1"); } }; entitlementCalculationService.calculateEntitlement(); } public static void main(String[] args) { new Main(); } } The aspect fails to trigger. Any ideas please? TIA, Adrian Smith BT Group _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users