java - 两次调用 Spring AOP 建议

标签 java spring aop spring-aop

出于某种原因,我的 Spring AOP 建议被调用了两次。我查了一下:

  1. Spring AOP advice is called twice但我没有使用 Component 注释,而是声明了一次方面 bean 并使用 @Aspect 对其进行注释,仅此而已。

  2. 我有点晚才意识到我的一个类还没有实现接口(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/

相关文章:

Javax 验证不给出错误消息

java - 如何使用 Spring Batch 向值添加双引号

c# - Microsoft Unity - 代码到 xml

java - 记录 .class 文件中的值,可能使用 AOP 进行拦截

java - 为什么 Hibernate 包含带有插入的标识字段?

java - 关闭应用程序直到特定日期

java - DBunit - 无法将 <1997/02/14> 类型转换为时间戳

java - 使用带有自定义 Bean 解析器的 .properties 文件

java - 为什么@EnableWs从spring bean中删除aop代理

Java 当我将参数传递给此方法时,在执行该方法中的任何代码之前,它被错误地除以我的常量之一