【发布时间】:2019-02-11 01:03:19
【问题描述】:
我们开发非常常用的 Spring MVC 应用程序
我们有:
控制器层(@RestComtroller + @GetMapping 和 @PostMapping)
服务层(@Service)
Repository 层(CrudRepository from spring-data-jpa)
我们使用 DTO 在 FE 和 BE 之间进行通信。
今天我的同事让我将所有 DTO 标记为 implements Serializable 并添加 serialVersionUID 字段。我问了原因,但他说这是“最佳实践”。我真的很困惑。 Serializable 与 java 序列化相关,但我们使用 JSON 进行 BE 和 FE 通信。
你能澄清一下这个问题吗?那么我应该用 Serializable 标记 spring mvc DTO 吗?
【问题讨论】:
-
这里的 FE 和 BE 到底是什么?控制器和服务之间?这些 DTO 是否真的在任何时候都被序列化了,或者它们只是在正在运行的应用程序中传递?
-
@NathanHughes 我假设是前端 (FE) 和后端 (BE)。
-
@Vinit:是的,但它是模棱两可的。同样令人困惑的是“我们如何使用 DTO 进行 FE 和 BE 之间的通信”,然后它说“但我们使用 JSON 进行 BE 和 FE 通信”。请根据您定义的层说明在哪里使用哪个。
-
@Nathan Hughes,FE 前端,BE - 后端。我们(实际上是 spring 这样做)在 json 中序列化 DTO。
-
好的,所以你从控制器返回一个 DTO,然后 messageConverter 从中构建 json?对,在这种情况下,使 DTO 可序列化毫无意义。只有在需要通过网络存储或传输时才使其可序列化。
标签: java json spring-mvc dto serializable