我想在微服务的环境下重新提出这个问题。以下是原问题的引用。
我正在为一个项目创建REST-API,并一直阅读有关最佳实践的文章。许多人似乎反对使用DTO,只需公开领域模型,而其他人似乎认为DTO(或用户模型或任何您想要称呼的内容)是不好的实践。就我个人而言,我认为这篇文章很有道理。
然而,我也了解到DTO的缺点,以及所有额外映射代码、可能与其DTO副本完全相同的领域模型等等。
现在,我的问题
我更倾向于在应用程序的所有层中使用一个对象(换句话说,只需公开领域对象,而不是创建DTO并手动复制每个字段)。并且,我的Rest合同与领域对象之间的差异可以使用Jackson注释进行处理,例如@JsonIgnore
或@JsonProperty(access = Access.WRITE_ONLY)
或@JsonView
等。或者,如果有一个或两个字段需要进行转换,而不能使用Jackson注释来完成,则将编写自定义逻辑来处理这些字段(相信我,在我的五年多的Rest服务旅程中,我甚至没有遇到过这种情况)。
我想知道,如果不将领域对象复制到DTO中是否会有任何真正的副作用。