2 回答

TA貢獻1827條經驗 獲得超8個贊
我有同樣的問題。就我而言,解決方案是配置一個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條經驗 獲得超4個贊
根據@MDenium 的評論
不要使用供內部使用的 WebAsyncTask。只需使用 CompletableFuture 或返回 Callable。如果您將 try/finally 放在 Callable 中,它將起作用
WebAsyncTask 只是不是一個 API,因此當您從 MVC 方法返回時,Spring 不知道如何處理它。這不是執行異步執行的正確方法。它僅在內部用于承載任務和上下文。
Spring MVC 支持:
延遲結果
可調用
可完成的未來
大概一個少數人
添加回答
舉報