应该使用哪个层从域对象转换为DTO

问题描述 投票:2回答:1

我们正在使用Spring Boot创建rest api。我们的项目中有三层(存储库,服务和控制器)。

假设我的控制器中有GetUser api,它返回UserDTO对象。

@GetMapping
public UserDTO getUser() {
   return userService.getUser();    
}

userService.getUser()是返回UserDTO对象还是返回User对象并且它在控制器中转换为UserDTO对象?哪一个更好的方法?

不久,域对象到DTO对象转换,应该在服务层还是控制器层完成?

layer dto spring-restcontroller
1个回答
2
投票

我认为没有“更好的方法”将域对象转换为DTO对象,这是一个品味问题。在我的项目中,我将域对象转换为服务层中的DTO,作为我的“业务逻辑”的一部分。因此,您只能将域对象的可访问性降低到服务层。此外,我想减少控制器内部的“逻辑”,因为它们是应用程序层的一部分。

PS:如果您正在寻找几种将域对象转换为DTO的方法,请查看我最新的Stackoverflow问题之一(How to properly convert domain entities to DTOs while considering scalability & testability

© www.soinside.com 2019 - 2024. All rights reserved.