我已经看过this,但我现在遇到了这个问题。
如果我更改我的控制器以返回ResponseEntity<?>
,则身体会很好,但如果它返回DeferredResult<ResponseEntity<?>>
,那么我会得到我的标题和状态代码,但没有响应正文。
非常感谢任何帮助
答案 0 :(得分:0)
使用DeferredResult
不仅仅是改变控制器的响应类型。返回DeferredResult
的控制器可能会将请求的处理委托给线程池(或某些异步机制),而实际执行请求的任何操作都必须在DeferredResult
上设置响应。像这样:
在控制器中:
DeferredResult deferredResult = new DeferredResult<>();
// pass deferredResult into a runnable task (or something similar)
// which is scheduled for execution via a thread pool (or something similar)
return deferredResult;
在代表控制器执行请求的任务中:
// do some work
// ...
deferredResult.setResponse(responseBody);