2016-10-28 32 views
3

當我們在Grails甚至Spring中談論命令對象時,它們是否與數據傳輸對象相同?意思是命令對象是DTO企業設計模式實現的一個例子嗎?如果不是,有什麼區別?命令對象和DTO差別?

回答

2

A 數據傳輸對象(DTO)是一個在任何兩層或進程之間傳輸數據的對象(簡單java bean)。通常可以引入/使用DTO層&用從外部Web服務或外部系統接收的數據填充DTO bean。

命令對象只是一個彈簧(MVC)的術語,其HTML表單數據映射到一個Java bean(表單bean)。這裏Spring Dispatcher servlet &幫助程序類將數據從html表單映射到java bean。在Grails中,命令對象所做的服務器不僅僅是AST轉換等數據載體。

總之,它們都是從一層到另一層的數據載體。

Spring中的命令對象是DTO企業設計模式實現的一個例子嗎?

是的,但需要注意的一點是,春調度的servlet & 輔助類填充HTML表單數據的命令對象。

+0

「命令對象只是一個將html表單數據映射到java bean(表單bean)的spring(mvc)術語」 - 在Grails的上下文中這不是真的,這就是問題所在。我們爲Grails所稱的「命令對象」做了一些特殊的事情,不僅包括數據綁定,還包括依賴注入和驗證。 –

+0

「......但要注意的是,Spring Dispatcher servlet&helper類使用html表單數據填充命令對象。」 - 在Grails中這不是真的。我們有一個AST轉換,它在編譯時嵌入所有數據綁定,依賴注入和驗證邏輯。調度程序servlet不參與Grails中的任何一個。 –

+0

我在Grails上看到了你的觀點,但是這個問題結合了Spring&Grails – developer