Spring控制器-分叉请求,在长时间运行函数结束前返回值
我有控制器和长期运行功能,如:Spring控制器-分叉请求,在长时间运行函数结束前返回值,spring,spring-mvc,callback,fork,Spring,Spring Mvc,Callback,Fork,我有控制器和长期运行功能,如: @Controller @RequestMapping("/deposit") public class DepositController { @RequestMapping public ModelAndView getNewJob(long userId, Model model) { //execute function that can runs a lot of time ... longRunFunc
@Controller
@RequestMapping("/deposit")
public class DepositController {
@RequestMapping
public ModelAndView getNewJob(long userId, Model model) {
//execute function that can runs a lot of time ...
longRunFunction();
return new ModelAndView("jobTasks");
}
public void longRunFunction(){
// process long run function
}
}
我的问题是:如何执行longRunFunction()
并返回ModelAndView(“jobTasks”)对浏览器的应答,而无需等待函数结束?
谢谢大家!
您好,我在这里找到了一个很好的例子这可以在Spring Framework中使用异步支持来完成,本质上是将长时间运行的任务委托给另一个服务,该服务的方法用
@Async
注释进行注释,然后该任务将由线程池执行,控制将立即返回给调用方
以下是更详细的参考资料:
将
@Async
添加到longRunningMethod
的方法声明中。但要在没有AspectJ编织的情况下实现这一点,您需要将此方法放在另一个bean中。可以通过某种同步spring函数配置来实现吗?我是spring的新手,我如何在DepositController中创建SampleBeanImpl,SampleBean接口的内容是什么?@prilia,您可以创建一个名为SampleBean
的新接口-将其称为更有意义的接口,使用类实现此接口,新类中的方法应具有@Async接口。不过,我建议您仔细阅读我提供的参考文件,以了解更多细节
public class SampleBeanImpl implements SampleBean {
@Async
void longRunFunction() { … }
}