我有控制器和长期运行功能,例如:
@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”)回答浏览器而不等待函数结束?
谢谢!
嗨,我在http://krams915.blogspot.co.il/2011/01/spring-3-task-scheduling-via.html
找到了很好的例子答案 0 :(得分:1)
这可以在Spring Framework中使用Asynch支持来完成,本质上将长时间运行的任务委托给另一个服务,其方法用@Async
注释注释,然后该任务将由线程池执行,控件将执行立即返回给你的来电者。
public class SampleBeanImpl implements SampleBean {
@Async
void longRunFunction() { … }
}
答案 1 :(得分:0)
将@Async
添加到longRunningMethod
的方法声明中。但是为了在没有AspectJ编织的情况下完成这项工作,您需要将此方法放在另一个bean中。