springmvc的两种常用异步处理方法
1.DeferredResult一旦 在Servlet容器中启用了异步请求处理功能,控制器方法就可以包装任何支持的控制器方法返回值DeferredResult,如下例所示:@GetMapping("/quotes")@ResponseBodypublic DeferredResult<String> quotes() {DeferredResult<Str...
·
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。
更多推荐
已为社区贡献2条内容
所有评论(0)