DeferredResult
一旦在 Servlet 容器中 启用异步请求处理功能,控制器方法可以用 DeferredResult 包裹任何支持的控制器方法的返回值,如下例所示:
@GetMapping("/quotes")
@ResponseBody
public DeferredResult<String> quotes() {
DeferredResult<String> deferredResult = new DeferredResult<String>();
// 将 deferredResult 保存在其他地方
return deferredResult;
}
// 可以在其他线程中设置结果,收到结果之后,就响应给前端了
deferredResult.setResult(result);
控制器可以从不同的线程异步地产生返回值,例如,响应外部事件(JMS 消息)、计划任务或其他事件。