出于某种原因,我的 Spring AOP 建议被调用了两次。我查了一下:
Spring AOP advice is called twice但我没有使用 Component 注释,而是声明了一次方面 bean 并使用 @Aspect 对其进行注释,仅此而已。
我有点晚才意识到我的一个类还没有实现接口(interface),这导致了 CGLIB2 要求。我解决了这个问题,CGLIB2 问题消失了,但双重调用仍然存在。
编辑:
忘了说我查过了,建议的方法没有被调用两次。
第二次编辑:
我用@Aspect 声明了一个类,然后我在应用程序上下文中将它声明为一个bean。 XML 文件中没有建议或切入点。
第三次编辑:
另外值得注意的是,我在执行 Around 建议的方法之前和之后进行了记录:
log.info("before");
pjp.proceed();
log.info("after");
我看到的是:
before
before
after
after
这真的很奇怪。
我设置的@Before 和@Around 建议都会发生这种情况。我还没有尝试其他类型。
这是切入点声明,名称已更改:
@Around("execution(public java.util.List<java.lang.String> pac.age.names.myDAO.doSomething(java.lang.String, java.lang.String))")
有什么想法吗?
谢谢,
浮潜
最佳答案
嗯,看来这实际上是记录器的问题。今天早上我检查了一下,发现所有的东西都被记录了两次。当我用常规 sysout 调用替换记录器调用时,一切正常。
关于java - 两次调用 Spring AOP 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516092/