Spring:DTO和服务层
Posted
技术标签:
【中文标题】Spring:DTO和服务层【英文标题】:Spring: DTO and service layer 【发布时间】:2013-08-31 15:32:07 【问题描述】:我正在使用当前层拓扑:
1) 道 2) 服务 3) 控制器(演示)
在我的一个控制器中,我收到了以下电话(来自客户):
public PlayerStatisticsDTO getPlayerStatistics(int playerId);
控制器现在应该将调用委托给服务层。
问题是,如果我创建一个类似的方法:
public PlayerStatisticsDTO getPlayerStatistics(int playerId);
在我的服务中,我实际上是让我的服务层知道 DTO 对象!
我认为这是一种不好的做法(或不是?)
所以我想出的另一个选择是创建一个新类:
public class PlayerStatistics ...
然后调用我的控制器:
PlayerStatistics stats = this.service.getPlayerStatistics(playerID);
return toDTO(stats);
这个解决方案的问题是我在我的项目中根本没有使用这个类,所以它看起来像是一个不必要的重复代码
【问题讨论】:
你有什么问题我不明白? 我不想让我的服务层熟悉我的 DTO 类 你想直接访问你的控制器,不是吗?你想以什么方式模块化? 【参考方案1】:如果在请求的数据和被呈现的数据之间存在一对一的映射,那么在表示层中使用 DTO 对象并不是一个坏习惯。 如果您要在稍后阶段更改表示层,那么您可以创建一个包含表示属性的新 POJO,并将它们映射到服务层中。
【讨论】:
以上是关于Spring:DTO和服务层的主要内容,如果未能解决你的问题,请参考以下文章
WCF/服务层/存储库层:从服务层返回 DTO?并从返回的 DTO 在 Controller 中创建 ViewModel