2014-02-27 52 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完成此操作。

    在较小的应用程序中,这可能是不合理的,特别是如果您还没有遇到上述问题,尽管这些问题会频繁出现。

  • 相关问题