DTO 如何在通过网络传输时自动序列化 (java)

How are DTOs serialized automatically while transferring them over the network (java)

我有几个 DTO(在前端),每个 DTO 都实现了 Serializable 接口。

我的问题是,当我通过网络将 DTO 发送到我的另一个远程应用程序(比如后端)时,DTO 如何自动序列化?我的远程应用程序有一个接受该 DTO 的 Web 服务 (jax-rs) 方法。

我知道为了序列化任何对象,我们必须编写一些代码。

但在这种情况下,我没有编写任何代码来在传输时序列化我的 DTO,并在我的远程应用程序接收到它时对其进行反序列化。

我在我的后端项目中使用 spring boot with jax-rs-jersery。

谢谢!

任何一种框架都会有一些转换点。对于 JAX-RS,它的 MessageBodyWriter. To handle the serialization, the writeTo() 方法被调用

void writeTo(T t,
         Class<?> type,
         Type genericType,
         Annotation[] annotations,
         MediaType mediaType,
         MultivaluedMap<String,Object> httpHeaders,
         OutputStream entityStream)
  throws IOException,
         WebApplicationException

对象 t 与响应的实体流一起传递给方法。由实现者将此对象转换为字节流。

有很多不同的编写器,选择取决于媒体类型、对象类型以及 isWriteable() 方法中确定的其他可能因素。

您可以在 Jersey docs chapters 8 and 9.

中阅读有关实体提供商的更多信息