最近在 Tomcat 里寫一個異步的 HTTP 服務端,出于方便的考慮使用了 Spring MVC 注解來搞定,然后就發(fā)生了詭異的結果疹启。
代碼如下:
@RequestMapping("/test")
public DeferredResult<String> test(
final @RequestParam(required = true) String uid,
final @RequestBody String s
)
HTTP 請求可以進入我定義的方法贺辰,并且異步也工作正常,在 DeferredResult<String> 對象被 setResult 時返回询枚,沒有任何異常出現(xiàn)违帆,但是!
客戶端收到 404金蜀,并且內容里包含了我返回的字符串刷后。
折騰一個下午以后,未果渊抄,第二天才偶爾發(fā)現(xiàn)尝胆,原來我忘記寫 @ResponseBody 了,正確的定義應該是這樣的:
@RequestMapping("/test")
public @ResponseBody DeferredResult<String> test(
final @RequestParam(required = true) String uid,
final @RequestBody String s
)
以這篇記錄护桦,紀念我浪費的又一天含衔。