springmvc的两种常用异步处理方法

匿名 (未验证) 提交于 2019-12-02 23:42:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!