【问题标题】:Spring MVC - Architecture - Should my Services return DTOs?Spring MVC - 架构 - 我的服务应该返回 DTO 吗?
【发布时间】:2017-07-04 17:52:37
【问题描述】:

我知道这方面有很多意见,但我仍然不清楚。

让我们举个例子,假设我有一个Customer 实体和一个CustomerDTO

1) 我的 saveget 服务是否应该接受 DTO 并返回 DTO?喜欢:

CustomerDTO saveNew(CustomerDTO dto);

CustomerDTO get(Long id);

2) 我的服务是否应该始终管理 Customer 对象和我的 Controller 进行转换,例如:

Customer saveNew(Customer c);

Customer get(Long id);

我认为第二个更灵活,然后如果在另一项服务中我需要调用客户获取(例如,将其设置为User)我有Customer 本身而我没有需要转换它。但似乎第一种方法更解耦?

【问题讨论】:

    标签: spring model-view-controller architecture entity dto


    【解决方案1】:

    一个好的 MVC 实践是每个视图有一个控制器,因此我们应该能够轻松地交换视图。假设我们有两个控制器为我们的域模型处理两种不同的表示形式(在这种情况下是两个不同的 DTO)。这两个控制器应该使用相同的服务,因此它们应该将相同的对象类型传递给服务,即Customer。在我看来,service业务逻辑层 的一部分,应该与域模型一起使用,controller表示层 的一部分。为了回答你的问题,我同意第二个例子,因为它更尊重 MVC 模式。

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 2011-01-13
      • 2019-02-11
      • 1970-01-01
      • 2011-06-16
      • 2018-04-07
      • 1970-01-01
      • 2012-04-28
      • 2018-12-27
      相关资源
      最近更新 更多