在Spring中为控制器异步方法指定超时


问题内容

我有一个由Java配置支持的Spring MVC应用程序,我想为所有涉及Callable <>接口的异步调用设置默认超时。例如,考虑如下控制器方法:

@RequestMapping
public Callable<String> doSmth() {
    return () -> {
        return "myview";
    }
}

我希望有一个控制者(每个应用程序)控制者有多少时间在请求超时之前有时间去做它的事情。

我想有一个 Java 配置而不是 xml 的示例 __


问题答案:

您可以通过扩展WebMvcConfigurerAdapter和覆盖来做到这一点configureAsyncSupport

 @Configuration
//other annotations if needed
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        configurer.setDefaultTimeout(100000); //in milliseconds
        super.configureAsyncSupport(configurer);
    }

或直接在上RequestMappingHandlerAdapter