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

标签 java web-services serialization jax-rs dto

我有几个 DTO(在前端),并且每个 DTO 都实现 Serialized 接口(interface)。

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

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

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

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

谢谢!

最佳答案

任何类型的框架都会有一些转换点。对于 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中阅读有关实体提供商的更多信息。 .

关于java - DTO 在通过网络传输时如何自动序列化 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50759520/

相关文章:

java - 为什么不推荐使用 java.io.File?

java - Android 与 recyclerview 和 Collection 夹有关的问题

android - MySQL 到 Sqlite 从 PHP 同步到移动应用程序 (iOS/Android)

java - JPA实体可以序列化到磁盘吗?

java - 比较数组 - 方法中的累加器不会递增

java - 无法将 Spring-data 的依赖添加到 Spring boot 中

web-services - 支付解决方案

javascript - 如何在以ajax方式插入后刷新我的服务器控件?

java - 为什么这个使用泛型的 HashMap 声明是错误的?

xml - 如何在 Symfony XmlEncoder 中设置编码 UTF-8 和 xmlns 属性