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() { … }
}