Java spring引导方面的延迟导致joinpoint方法的延迟

Java spring引导方面的延迟导致joinpoint方法的延迟,java,spring,spring-boot,aspectj,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") publ

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

@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.");
        }
    }
}
这是
ApiResource
类中的
getAddress
方法,正如您所看到的,这是一个非常简单和快速的方法:

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

    public String getAddress(String mobile) {
        return "This is your address";
    }
}
现在,当我调用
getAddress
方法时,aspect中的
Thread.sleep(10000)
会导致
getAddress
方法的执行延迟

如何从joinpoint方法分离方面的执行

注意

我使用
Thread.sleep(10000)
来演示我的问题。我想在方法执行后做一些事情,不想影响主方法,不管是延迟、异常还是其他什么。为此,我应该使用什么

更新


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

为什么您认为可以将它们分开?AOP的整个理念是它们相互交织在一起。花这么长时间的原因是因为你在那里睡了10秒钟,所以不要这样做。这个问题似乎与标题无关。@Kayaman更新了标题,我不能吗?我想在方法执行后做一些事情,不想影响主方法,不管是延迟、异常还是其他什么。为此,我应该使用什么来执行?那么您想执行它们吗?也许,我还想使用已执行方法的返回值及其参数值。@Kayaman请检查我的更新