Spring Boot方面的延迟导致连接点方法的延迟

时间:2020-07-27 12:10:20

标签: java spring spring-boot aspectj

我有一个简单的方面,如下所示:

@Aspect
@Component
public class ApiCallLogAspect {

    @AfterReturning(pointcut = "execution(* com.example.web.rest.api.ApiResource.getAddress (String)) && args(mobile))", argNames = "mobile")
        public void endpointAfterReturning(String mobile) throws InterruptedException {
            Thread.sleep(10000);
            System.out.println("This is aspect log.");
        }
    }
}

这是getAddress类中的ApiResource方法,如您所见,这是一种非常简单且快速的方法:

@RestController
@RequestMapping("/api/v1")
public class ApiResource {

    public String getAddress(String mobile) {
        return "This is your address";
    }
}

现在,当我调用getAddress方法时,Thread.sleep(10000)方面会延迟执行getAddress方法。

如何将方面的执行与连接点方法分开?

注意

我用Thread.sleep(10000)来说明我的问题。我想在方法执行后做一些事情,并且不想影响主方法,无论是延迟,异常还是其他。为此我该怎么做?

更新

我的目标是将请求记录到我的其他api并存储调用详细信息,例如ip,参数值,请求标头和返回值。

0 个答案:

没有答案
相关问题