DTO转换层

时间:2019-04-12 07:17:01

标签: java oop model-view-controller architecture

控制器应与DTO一起使用,并与域模型一起使用。对于控制器和服务之间的通信,在控制器或服务中从DTO转换为模型的最佳位置是什么?而且,执行服务逻辑后构建DTO的最佳位置是什么?

2 个答案:

答案 0 :(得分:1)

从DTO转换为模型(反之亦然)的最佳位置是Mapper。

您不应将转换逻辑放在服务代码中,因为DTO可以被多个服务使用。将其放置在服务代码中会使它绑定到一项特定服务。不是解决方案。

您不应将转换逻辑放入控制器中,因为服务为了进行某些转换而依赖于控制器。不是解决方案。

创建一个Mapper界面。为此提供实现(您甚至可以使用库来映射,例如ModelMapper)。并在需要时使用此映射器进行转换。

答案 1 :(得分:0)

通常,您将拥有一个带有映射类的“映射”包,您可以在其中执行所有映射操作(对模型进行DTO,反之亦然),通常使用诸如Mapstruct之类的映射框架。

然后,您的控制器层和服务层在相互调用之前,仅对它们的数据(DTO或模型)调用这些映射方法。

稍后我将发布示例。