在控制器或服务层的春季 MVC 中进行验证?
在很长一段时间里,我试图弄清楚在Spring MVC应用程序中应该在哪里进行用户输入的验证。在许多在线博客和教程中,我基本上读到控制器应该验证用户输入,如果无效,则通过显示包含错误消息的页面来响应用户。然而,我目前对Spring和Spring MVC分层系统的理解是,控制器是应用程序逻辑(服务层)和“Web世界”之间的唯一浅接口,允许从Web使用服务层。另外,据我所知,Spring MVC只为控制器中的验证提供了合理的工具。
如果现在验证在控制器中进行,如果在稍后的某个时刻我想从“Web世界”中解绑应用程序逻辑,则必须在新环境中重新实现验证逻辑(例如,使用Swing的桌面应用程序)。在我看来,决定哪些操作对域对象是“有效的”,以及这些对象可能具有哪些“有效”状态的能力是服务层的核心部分,而不是应用程序的其他部分(例如控制器)所关注的问题。
在这种情况下,为什么将输入验证逻辑放在控制器层而不是服务层是“好的做法”?