调用controller方法,遇到操作时间很长的情况下,不希望前端一直等待操作,而希望前端立马接收到操作启动的反馈,而真正的操作在后端执行,需要用到异步调用的方法。实现步骤如下:
一、配置异步支持: 首先,在应用程序的主类上添加 @EnableAsync 注解,以启用异步支持
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; //@EnableAsync @SpringBootApplication @EnableAsync public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
二、在ExportService的方法exportCsv上增加注解 @Async声明该方法是异步方法
@Service public class ExportService { /** * 导出路径。 * * @param path 参数说明 * @return String */ //如下注解 支持异步执行 @Async public String exportCsv(String path) { // 这里是需要异步执行的代码 } }
三、Controller类上调用异步方法,立马返回"导出操作在后台执行!请耐心等待!",导出进程在后端异步执行
@RestController @RequestMapping("/transfer") public class ImportController extends BaseController { @Autowired private ExportService exportService; /** * 联机导出的数据。 * * @param path 参数说明 * @return AjaxResult */ @PostMapping(value = "/exportCsv") @ResponseBody public AjaxResult ljExportCsv(@Valid String path) { exportService.exportCsv(path); return "导出操作在后台执行!请耐心等待!" ; } }