是否需要序列化对象以使用@RequestBody @ResponseBody批注



一个类是否在控制器方法中作为参数传递,并由实现Serializable接口所需的@RequestBody注释标记?

我对用@ResponseBody注释标记的返回值类有同样的问题。

我也非常感谢解释为什么需要或不需要Serializable接口。

它没有。当您从带有@ResponseBody注释的控制器方法返回实例时,您可能会说它被序列化为 JSON。但这种序列化不是涉及Serializable接口的Java序列化。

@RequestBody@ResponseBody注释由RequestResponseBodyMethodProcessor处理,使用HttpMessageConverter实现来执行转换,例如从对象到JSON或从JSON到对象。

当您查看HttpMessageConverter接口时,有一个具有以下签名的canRead方法:boolean canRead(Class<?> clazz, MediaType mediaType);,正如您所看到的,它不仅仅绑定到使用泛型的可序列化类。

来源和更多信息

  • RequestResponseBodyMethodProcessor JavaDoc
  • HttpMessageConverter JavaDoc

最新更新