2009-12-03 101 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

相關問題