2 回答
TA贡献1827条经验 获得超7个赞
我有同样的问题。就我而言,解决方案是配置一个AsyncTaskExecutor:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(-1);
configurer.setTaskExecutor(asyncTaskExecutor());
}
@Bean
public AsyncTaskExecutor asyncTaskExecutor() {
// an implementaiton of AsyncTaskExecutor
return new SimpleAsyncTaskExecutor("async");
}
}
TA贡献1872条经验 获得超3个赞
根据@MDenium 的评论
不要使用供内部使用的 WebAsyncTask。只需使用 CompletableFuture 或返回 Callable。如果您将 try/finally 放在 Callable 中,它将起作用
WebAsyncTask 只是不是一个 API,因此当您从 MVC 方法返回时,Spring 不知道如何处理它。这不是执行异步执行的正确方法。它仅在内部用于承载任务和上下文。
Spring MVC 支持:
延迟结果
可调用
可完成的未来
大概一个少数人
添加回答
举报