DeferredResult

    一旦在 Servlet 容器中 启用异步请求处理功能,控制器方法可以用 DeferredResult 包裹任何支持的控制器方法的返回值,如下例所示:

    1. @GetMapping("/quotes")
    2. @ResponseBody
    3. public DeferredResult<String> quotes() {
    4. DeferredResult<String> deferredResult = new DeferredResult<String>();
    5. // 将 deferredResult 保存在其他地方
    6. return deferredResult;
    7. }
    8. // 可以在其他线程中设置结果,收到结果之后,就响应给前端了
    9. deferredResult.setResult(result);

    控制器可以从不同的线程异步地产生返回值,例如,响应外部事件(JMS 消息)、计划任务或其他事件。