【发布时间】:2014-05-06 12:41:47
【问题描述】:
我正在从 spring-mvc 控制器调用异步函数。
@Async
public void doSomething()
{
....
}
我只是从控制器方法调用这个函数
@RequestMapping(/person)
@ResponseBody Person returnPerson()
{
service.doSomething();
}
函数 returnPerson 按预期返回。但是我想返回DeferredResult 来表示returnPerson 的完成。
@RequestMapping(/person)
@ResponseBody DeferredResult<Person> returnPerson()
{
service.doSomething();
}
我认为要做到这一点,我应该知道 deSomething 何时完成执行,以便我可以将响应返回给调用者。我不知道我怎么知道 doSomething 何时完成执行,然后我如何基于此返回 DeferredResult?
【问题讨论】:
-
你的
doSomething实际上是做什么的?如果它不相关并且您不需要结果,那么没关系。如果你这样做,它应该返回一个DeferredResult或者它不应该是异步的。 -
doSomething() 异步上传文件,我只需要在 deferreddresult 中返回状态响应
-
然后将其作为某种
DeferredResult<StatusResponse>状态从doSomething()返回 - 您通常只想在明确不关心响应的情况下执行异步操作。
标签: java spring-mvc asynchronous synchronization