springboot设置程序执行超时时间
springboot2.x
方法一,通过配置文件:
spring.mvc.async.request-timeout=2s
webconfig需要继承WebMvcConfigurerAdapter,有点过时了这个
public class WebMvcConfig extends WebMvcConfigurerAdapter{
}
controller代码
@GetMapping("/index")
@ResponseBody
public Callable<JsonResult> index() {
return new Callable<JsonResult>() {
@Override
public JsonResult call() {
try {
Thread.sleep(60000);
} catch (InterruptedException e){
Thread.interrupted();
return JsonResult.failure("执行失败");
}catch (Exception e){
e.printStackTrace();
return JsonResult.failure("执行失败");
}
return JsonResult.success();
}
};
}
方法二:
webconfig实现WebMvcConfigurationSupport 的bean
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void configureAsyncSupport(final AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(1);
configurer.registerCallableInterceptors(timeoutInterceptor());
}
@Bean
public TimeoutCallableProcessingInterceptor timeoutInterceptor() {
return new TimeoutCallableProcessingInterceptor();
}
}
controller代码
@GetMapping("/index")
@ResponseBody
public Callable<JsonResult> index() throws InterruptedException {
return new Callable<JsonResult>() {
@Override
public JsonResult call() throws Exception {
Thread.sleep(60000);
return JsonResult.success();
}
};
}
