HttpMessageConverter的EOF处理无效



读取数据时,Spring HttpMessageConverter必须如何处理无效EOF?也就是说,在这种情况下,SpringMVC的其余部分如何期望客户转换器发出错误请求的信号?

用于读取数据的方法的签名是

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

因此,有两种选择可以用来发出发现无效EOF的信号:

  1. 抛出一个IOException(应该是EOFException
  2. 抛出一个HttpMessageNotReadableException(它本身可能有一个EOFException作为它的cause()

第二个选项可能更好,因为它更容易将其转换为响应代码400。IOException是一个过于普遍的例外,无法对其进行任何特殊处理

Spring自己的MappingJackson2HttpMessageConverter也将所有IOException转换为HttpMessageNotReadableException

最新更新