【发布时间】:2014-02-19 21:13:12
【问题描述】:
在相当长的一段时间里,我试图弄清楚在 Spring MVC 应用程序中应该在哪里验证用户输入。在许多在线博客和教程中,我基本上读到控制器应该验证用户输入,如果无效,则通过显示包含错误消息的页面来响应用户。然而,我目前对 Spring 和 Spring MVC 分层系统的理解是,Controller 是应用程序逻辑(服务层)和“Web 世界”之间的唯一浅层接口,允许从 Web 使用服务层。另外,据我所知,Spring MVC 确实只提供了在 Controller 中进行验证的合理工具。
如果现在验证发生在控制器中,如果稍后我想从“网络世界”中解开应用程序逻辑,则必须在新环境中重新实现验证逻辑(例如使用 Swing 的桌面应用程序)。在我看来,决定哪些操作在域对象上“有效”以及这些对象可能具有哪些“有效”状态的能力是服务层的核心部分,而不是应用程序其他部分的关注点(例如控制器)。
在这种情况下,为什么将输入验证逻辑放在控制器层而不是服务层是“好的做法”?
【问题讨论】:
-
jeejava.com/spring-service-layer-bean-validation/
标签: java spring validation spring-mvc