控制器应与DTO一起使用,并与域模型一起使用。对于控制器和服务之间的通信,在控制器或服务中从DTO转换为模型的最佳位置是什么?而且,执行服务逻辑后构建DTO的最佳位置是什么?
答案 0 :(得分:1)
从DTO转换为模型(反之亦然)的最佳位置是Mapper。
您不应将转换逻辑放在服务代码中,因为DTO可以被多个服务使用。将其放置在服务代码中会使它绑定到一项特定服务。不是解决方案。
您不应将转换逻辑放入控制器中,因为服务为了进行某些转换而依赖于控制器。不是解决方案。
创建一个Mapper
界面。为此提供实现(您甚至可以使用库来映射,例如ModelMapper)。并在需要时使用此映射器进行转换。
答案 1 :(得分:0)
通常,您将拥有一个带有映射类的“映射”包,您可以在其中执行所有映射操作(对模型进行DTO,反之亦然),通常使用诸如Mapstruct之类的映射框架。
然后,您的控制器层和服务层在相互调用之前,仅对它们的数据(DTO或模型)调用这些映射方法。
稍后我将发布示例。