2013-06-24 56 views
0

當讀取數據時,彈簧HttpMessageConverter如何處理無效的EOF?也就是說,Spring MVC的其餘部分如何期望客戶轉換器在這種情況下發出錯誤的請求?HttpMessageConverter無效的EOF處理

實現用於讀取數據的方法的簽名是

T read(Class<? extends T> clazz, HttpInputMessage inputMessage) 
throws IOException, HttpMessageNotReadableException 

因此,有兩種選擇用於發信號到無效EOF發現:

  1. 拋出一個IOException(其應該是一個EOFException)。
  2. 投擲HttpMessageNotReadableException(其本身可能有EOFException作爲其cause())。

回答

1

第二個選擇可能更好,因爲它更容易翻譯成響應代碼400. IOException是太普通的例外,因此對它進行任何特殊處理。

春天自己的MappingJackson2HttpMessageConverter也是translating all IOExceptions into HttpMessageNotReadableExceptions

+0

Spring自己的轉換器做了什麼是關鍵:這顯示了他們認爲是正確的事情。另外,正如我發現的那樣,新的(在Spring 3.2中)MVC測試框架將(未捕獲的)'EOFException'視爲測試失敗,但是'HttpMessageNotReadable'不是測試失敗。 – Raedwald