理想情况下,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(使用密钥)并将其转换为学生实体。
业务 API(无 Web 上下文依赖 - 可以进行 JUnit 测试):
- 充当门面。调用多个服务 API 来实现一个业务请求。
- 提供专门为 Web 应用程序定制的 API。
你会用不同的方式解决这个问题吗?是否有与此特定问题相关的任何资源(书籍、文章等)?
之前的一些讨论没有回答我的问题:
谢谢,维杰