我正在使用Spring 3,但我认为这个问题更广泛适用。
我有一个带前端控制器的Web应用程序(Spring DispatcherServlet
)。从那里调用一个服务,该服务又使用DAO或两个来完成所需的任务,例如将记录插入数据库。
我在哪里确保数据有效?假设我有一个最大长度为50个字符的条目 - 在什么时候我应断言输入的长度是< = 50?
如果我检查控制器的有效性,则可能会编写其他调用服务的代码,但不会验证数据。
我可以检查服务层的有效性,但也许有人可能会写一个不检查数据有效性的服务,从而将“坏”数据传递给DAO。
将有效性检查放在DAO中似乎显而易见 - 这是否会影响我测试代码的能力?
检查数据有效性时的最佳做法是什么?
答案 0 :(得分:1)
如果可以从控制器以外的地方调用服务,则可以在服务层中进行验证。如果输入数据无效,您可以从服务中抛出自定义异常。调用者可以通过查看异常的详细信息来获取有关哪些数据导致验证错误的信息。