在Spring Boot应用程序中使用Map vs DTO

时间:2019-12-17 13:06:29

标签: java spring spring-boot http

在spring-boot应用程序中接受POST请求数据的首选方式是什么:
使用map(key,value)对映射发布请求的正文,或使用DTO映射请求内容。
如果有人可以指出每种方法的利弊,那将非常有帮助。

相同的代码段-
使用地图:

@PostMapping("/updateBalance")
public ResponseEntity<?> updateBalance(RequestEntity<List<Map<String, Object>>> requestData,HttpServletRequest headerRequest)

使用DTO:

@PostMapping("/updateBalance")
public ResponseEntity<?> updateBalance(List<RequestDTO> requestData,HttpServletRequest headerRequest)

3 个答案:

答案 0 :(得分:3)

如果输入数据的格式是固定的(即始终具有相同的数据项),则使用DTO。如果期望的格式不匹配,这将导致快速失败。

如果传入的数据具有变量条目,则可以使用映射并将其拆开以放置各个项目,但是需要对其进行处理。

答案 1 :(得分:0)

按照惯例,DTO从数据流的不同层进行数据传输。为什么您需要在这个地方使用地图?最好使用DTO而不是HashMap来跳过解析Map的开销

答案 2 :(得分:0)

地图仅具有一个优点-通用性,没有任何特定的实现,可在任何控制器/服务/等中使用。就这样。 使用DTO,您可以自定义序列化和反序列化的过程。而且,如果通常此过程非常简单-DTO字段<-> json字段,则有时可以使用DTA实施特定的反序列化操作(将json字符串值枚举)或以特定方式处理值。同样,DTO可以在json字段名称和对象字段名称之间以特定顺序进行特定的交互。使用DTO,更容易使用字段验证,只有使用DTO,您才能在验证过程中使用特定的消息传递。 我发现使用DTO有很多优势。