繁体   English   中英

Spring-AOP:@AfterReturning 立即执行

[英]Spring-AOP:@AfterReturning is executed immediately

嗨,我正在使用 Spring AOP 进行日志记录,我有以下两个方面 @Before 和 @AfterReturning 不幸的是,两者都在这里打印相同的响应,期望是 @Before 打印方法输入和 @AfterReturning 打印方法输出。

 @Before(value ="execution(* com.abc.xyz.service..*(..))")
    fun logBeforeAllMethods(joinPoint: JoinPoint) {
        log.info("Service Request : " + Arrays.toString(joinPoint.args))
    }

    @AfterReturning(value="execution(* com.abc.xyz.service..*(..))")
    fun logAfterAllMethods(joinPoint: JoinPoint) {
        log.info("Service Response : " + Arrays.toString(joinPoint.args))
    }

如果您告诉它们,这两种建议方法打印出相同的内容也就不足为奇了。 在这两种情况下,您都说要打印方法参数 您无处可说应该打印结果 您可以通过@AfterReturning注释中的可选returning参数来完成此操作。

也许你想查看Spring 手册,有一个你想要做什么的例子(甚至在 Kotlin 中可用!)。

@Aspect
class AfterReturningExample {
  @AfterReturning(
    pointcut = "com.xyz.myapp.CommonPointcuts.dataAccessOperation()",
    returning = "retVal")
  fun doAccessCheck(retVal: Any) {
      // ...
  }
}

当然,如果您的建议中同时需要连接点和返回值,您也可以将两者都绑定到方法参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM