在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
。