理想情况下,Spring MVC应用程序中的控制器必须接收请求,将请求发送到API,将(调用的)结果加载到模型上(以便随后呈现该视图)并转发到一个看法。他们不应该再做。尽量减少控制器责任
我的控制器今天做的远不止这些,我想将某些resposibilities从控制器移到其他API上。我的应用程序设计今日(非常典型的):
controller <-> Service API <-> DAO <-> DB
控制器今天填补了哪些Web应用程序需要什么服务API提供之间的增量。 我想在控制器和服务API之间放置额外的层/层,以消除这个增量。我的问题是这些层应该是什么层,这些新层的责任是什么?
我现在的想法如下
controller <-> controller helper <-> Business API <-> Service API <-> DAO <-> DB
控制器助手(网络情境感知 - 将取决于模型的HttpServlet和其他网络上下文类):
- 转换实体DTO对象(2方式)
- 解析ID到实体。例如。控制器查找学生i.d. (使用键)并将其转换为学生实体。
业务API(没有网络语境依赖性 - 可JUnit的测试):
- 充当门面。调用多个服务API来实现一个 业务请求。
- 提供专门针对Web应用程序的API。
你能解决这个问题吗?是否有任何资源(书籍,文章等)与这个特定问题有关?
以前的一些讨论,认为确实不回答我的问题:
Designing mvc controller layer
Service layer = Application layer = GRASP Controller layer
Moving Validation, Html Helpers to Service Layer in MVC
感谢, 维杰