Spring MVC - 体系结构 - 我的服务应该返回 DTO 吗?



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

让我们举个例子来问它,假设我有一个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);

我认为第二个更灵活,然后如果在另一个服务中我需要调用客户 get(例如,将其设置为User(,我有Customer本身,我不需要转换它。但似乎第一种方法更加脱钩?

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

最新更新