2009-12-03 35 views
2

在Spring中,有没有办法在返回视图后执行任务,或者我需要创建一个ThreadPool并执行它?modelAndView返回后执行任务

例:

public ModelAndView handleRequest(HttpServletRequest request, 
    HttpServletResponse response) throws Exception { 

    Map<Object, Object> data = new HashMap<Object, Object>(); 

      //do some stuff 
      executeSomeStuffButDontWaitForTheResult();  
    return new ModelAndView("result", data); 
} 

回答

2

如果您使用的是Spring 3,最简单的方法是使用@Async注释executeSomeStuffButDontWaitForTheResult方法。

在您的配置:

<task:annotation-driven executor="yourTaskExecutor" scheduler="yourTaskScheduler"/> 

欲了解更多信息here

2

春天包含面向方面的编程框架,它允许您指定之前,可能是你正在寻找的那种东西你的代码的各个部分后运行的代码。看看Spring文档:Aspect Oriented Programming with Spring

0

您可以使用任务执行像@axtavt说,或者你可以使用Asynchronous JMS

0

是啊,这只是一个任产生线程或(更好)从池中抓取一个线程问题。它与Spring无关。

但是在查看你的代码时,你已经打开了视图只是为了渲染部分填充的甚至空的地图的可能性。 (如果你没有将地图传递给executeSomeStuffButDontWaitForTheResult()方法,则可以保证地图是空的。)目前还不清楚你试图做什么,但是我怀疑你是否打算返回一个部分或空的地图,并且在用户正在查看网页时地图不会填满。如果你更仔细地描述你想要做的事情,我们可能会为你提供一些替代想法。

+0

我没有填写的观点,因为它是个例。我只是想呈现视图,但在不需要渲染之后继续做一些工作。 (为了更快地将结果返回给客户端) – Mike