此刻我感到有些矛盾。我有一个 Web 应用程序,使用 Stripes 作为 MVC 框架,使用 Spring/Hibernate 作为后端。我的 MVC 层中有一个帐户注册方法,需要进行以下验证:
- 用户名尚未被使用
- 提供的电子邮件地址尚未与其他帐户相关联
我在 Stripes(MVC 层)中有一个验证方法可以检查这两种情况,但想知道我的服务层是否应该重复这些检查?如果服务层接口(interface)作为 Web 服务公开,那么我认为验证是个好主意,但如果仅在 Web 应用程序的上下文中使用,是否需要验证?
编辑:我不打算复制验证代码 - 我的意思是在两个地方复制验证方法调用。
我认为我的选择是:
- 在 MVC 和服务层复制验证调用
- 仅在 MVC 层执行此验证
- 仅在服务层执行此验证。
此处的最佳做法是什么?我正在寻找有关我应该选择哪个选项以及原因的建议/意见。
请注意,注册表单的输入字段有简单的验证检查(如检查空白),我认为这些应该仅由 MVC 验证处理;我只关心更复杂的验证。
最佳答案
不要重复代码。使用 JSR303 Bean Validation因此您可以在应用的所有层中使用相同的验证逻辑。
Hibernate Validator (一个独立于 Hibernate ORM 东西的项目)提供了这个接口(interface)的引用实现。它使用起来非常简单,你可以get started with it very quickly .
关于java - 我应该在我的 MVC 层和服务层中重复验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141253/