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

时间:2018-06-08 11:19:53

标签: java web-services serialization jax-rs dto

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

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

任何类型的框架都会有一些转换点。对于JAX-RS,它是MessageBodyWriter。要处理序列化,请调用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中了解有关实体提供商的更多信息。