For some reason, my Spring AOP advices are being called twice. I checked:
Spring AOP advice is called twice but I am not using the Component annotation, and am declaring the aspect bean once and annotating it with @Aspect and that’s it.
Somewhat belatedly I realized that one of my classes was not implementing an interface yet, which caused CGLIB2 requirements. I fixed that, and the CGLIB2 problem went away, but the double invocation remains.
Edit:
Forgot to mention that I checked, and the method being advised is not called twice.
2nd edit:
I declare a class with @Aspect, and then I declare it as a bean in the application context. There are no advices or pointcuts in the XML file.
3rd edit:
Also worth noting is that I log before and after the execution of the method being advised with Around:
log.info("before"); pjp.proceed(); log.info("after");
What I see is:
before before after after
Which is really weird.
This happens for both @Before and @Around advice that I have set up. I have yet to try the other types.
Here is the pointcut declaration, with changed names:
@Around("execution(public java.util.List<java.lang.String> pac.age.names.myDAO.doSomething(java.lang.String, java.lang.String))")
Any ideas?
Thanks,
Snorkel
Advertisement
Answer
Well, it seems like this is actually an issue with the logger. This morning I checked and found that everything is being logged twice. When I replaced logger calls with regular sysout calls, everything worked fine.