版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/programmeryu/article/details/91606271
1.DeferredResult
一旦 在Servlet容器中启用了异步请求处理功能,控制器方法就可以包装任何支持的控制器方法返回值DeferredResult,如下例所示:
@GetMapping("/quotes") @ResponseBody public DeferredResult<String> quotes() { DeferredResult<String> deferredResult = new DeferredResult<String>(); // Save the deferredResult somewhere.. return deferredResult; } // From some other thread...
deferredResult.setResult(data);
控制器可以从不同的线程异步生成返回值 - 例如,响应外部事件(JMS消息),计划任务或其他事件。
2.Callable
控制器可以使用包装任何支持的返回值java.util.concurrent.Callable,如以下示例所示:
@PostMapping public Callable<String> processUpload(final MultipartFile file) { return new Callable<String>() { public String call() throws Exception { // ... return "someView"; } }; } 然后可以通过已配置的 任务运行给定任务来获取返回值 TaskExecutor。
文章来源: https://blog.csdn.net/programmeryu/article/details/91606271