2014-02-27 121 views
1

任何人都可以提出將數據從控制器發送到服務層的最佳方法嗎?從Spring MVC控制器到服務層來回傳遞數據

我有UI < - >控制器< - >服務< - >的DAO

我有模型(或命令)來保存在UI用戶輸入傳遞到控制器上的數據

我想在控制器層創建模型,但不想直接將它們作爲服務層傳遞,然後依賴於控制器層。

您是否建議在服務層創建模型並將其用於控制​​器層?但在這種情況下,這些模型將被jsps用於向用戶提供數據?這可以嗎 ?

任何人都可以建議在java中設計上面顯示的mvc層的最佳方式?

由於 拉梅什

回答

0

控制器採取輸入從UI和向前(故名控制器)請求到適當的模型中土產MVC模式。但是既然你在使用Spring MVC,爲什麼不在Spring上下文中創建你的模型對象,並且使用它們就是你的服務層?您可以在服務層使用@Resource或@Autowired。此外,如果你想重用模型對象,你可以很容易地做到這一點,因爲這樣它們不會被鎖定到特定的層。例如,使用您的上下文的Web服務。 也許別人有更好的方法來做到這一點。

3

這不一定是錯的直接服務領域模型對象的UI層,它只是你會很快碰到一些常見問題:

  • 視圖屏幕只需要模型的一小部分
  • 某些領域,如例如User.password你永遠要發送到視圖層
  • 域模型可以包含loops,對象圖是回到最初的對象意味着對象的導航路徑。這不能造成脫管對象

常見的模式來解決,這是DTO模式的域模型進行序列化正確

  • 延遲初始化例外,在這裏看到description by Martin Fowler

    在較大的應用程序中,常用的方法是讓控制器發送和接收DTO,然後在需要時進行一些映射以將它們轉換爲域對象,例如可使用Dozer mapping library完成此操作。

    在較小的應用程序中,這可能是不合理的,特別是如果您還沒有遇到上述問題,儘管這些問題會頻繁出現。

  • 相關問題