命令对象和DTO,区别?

Ano*_*man 5 grails spring spring-mvc

当我们在Grails甚至Spring中谈到命令对象时,它们是否与数据传输对象相同?意思是,命令对象是DTO企业设计模式实现的一个例子吗?如果没有,有什么区别?

dev*_*per 6

数据传输对象(DTO)是一个对象(简单的Java bean)携带任意两层或进程之间的数据。您通常可能会引入/使用 DTO 层并使用从外部 Web 服务或外部系统接收到的数据填充 DTO bean。有关更多详细信息,请参阅Martin Fowler 关于数据传输对象的博客

命令对象只是一个spring (mvc) 术语,它将 html 表单数据映射到一个 java bean (form bean)。这里 Spring Dispatcher servlet & helper 类将数据从 html 表单映射到 java bean。在 Grails 中,命令对象的作用不仅仅是像 AST 转换这样的数据载体。

总之,它们都是从一层到另一层的数据载体。

Spring 中的命令对象是 DTO 企业设计模式实现的一个例子吗?

是的,但需要注意的是 Spring Dispatcher servlet 和 helper 类使用 html 表单数据填充命令对象。