让 SpringBoot API 在处理之前返回 200

dcb*_*ack 1 java rest spring asynchronous spring-boot

我有一个 API,我不希望人们能够监控对 api 的 xhr 请求所花费的时间,具体取决于帐户是否有效。

问题是,如果他们想要收集用户 ID,他们可以一遍又一遍地向 API 发送垃圾邮件,并且会注意到真实 ID 需要更长的时间才能返回响应。每次响应都是 200,页面不会对响应执行任何操作。

有没有一种简单的方法可以让Java SpringBoot应用程序立即返回200然后进行处理?

And*_*cus 5

是的,您可以异步执行此操作。你只需要用 注释你的@Controllers 方法@Async。这将使该方法异步执行,因此连接不会被阻止。代理返回,更多信息可以在文档Future中找到。


Yog*_*ati 5

@Async是最简单的方法。

\n\n

@EnableAsync在主类中添加注释(即带有@SpringBootApplication注释的主类)

\n\n

将 @Async 添加到您想要在单独线程中执行的方法。

\n\n

一些限制@Async

\n\n
    \n
  • 它必须应用于公共方法仅自调用\xe2\x80\x93调用
  • \n
  • 同一类 \xe2\x80\x93 中的异步方法不会\xe2\x80\x99t 工作
  • \n
\n