【发布时间】:2012-09-24 17:21:08
【问题描述】:
理想情况下,Spring MVC 应用程序中的控制器必须接收请求,将请求发送到 API,将(调用的)结果加载到模型(以便视图随后呈现它)并转发到视图。他们不应该再做任何事情了。
我的控制器今天所做的远不止这些,我想将某些职责从控制器转移到其他 API。我今天的应用程序设计(非常典型):
controller <-> Service API <-> DAO <-> DB
如今,控制器填补了 Web 应用所需的内容与服务 API 提供的内容之间的差异。 我想在控制器和服务 API 之间放置额外的层/层,以消除这个增量。我的问题是这些应该是什么层以及这些新层的职责应该是什么?
我目前的想法如下
controller <-> controller helper <-> Business API <-> Service API <-> DAO <-> DB
控制器助手(Web 上下文感知 - 将依赖于 Model、HttpServlet 和其他 Web 上下文类):
- 将实体转换为 DTO 对象(2 种方式)
- 将 ID 解析为实体。例如。控制器查找学生 ID。 (使用密钥)并将其转换为 Student 实体。
业务 API(无 Web 上下文依赖 - 可以进行 JUnit 测试):
- 充当门面。调用多个服务 API 来实现一个 业务请求。
- 提供专门为网络应用量身定制的 API。
你会用不同的方式解决这个问题吗?是否有与此特定问题相关的资源(书籍、文章等...)?
之前的一些讨论没有回答了我的问题:
Designing mvc controller layer
Service layer = Application layer = GRASP Controller layer
Moving Validation, Html Helpers to Service Layer in MVC
谢谢, 维杰
【问题讨论】:
标签: java spring-mvc