春天哪种方式被认为是更好的软件工程实践:
1)使用spring注释@RequestParam
@RequestMapping(value = "/doSomeThing", method = RequestMethod.GET)
@ResponseBody
public boolean doSomeThing(@RequestParam("name") String name) {
boolean success = false;
// do the logic
return success;
}
2)使用请求方法getParameter
@RequestMapping(value = "/doSomeThing2", method = RequestMethod.GET)
@ResponseBody
public boolean doSomeThing2(HttpServletRequest request) {
boolean success = false;
String name = request.getParameter("name");
// do the logic
return success;
}
答案 0 :(得分:4)
我会使用@RequestParam
注释,因为这样您的代码更具可读性并且更容易进行单元测试。
为什么更具可读性?
因为很明显,您只依赖于HTTP API来处理该单个参数。 HttpServletRequest
是一个很大的对象,你可以用它做很多事情。在这种情况下,您只使用该功能的非常小的子集。当方法签名尽可能具体时,代码更易读。类型为HttpServletRequest
的参数与String
类型的参数不太具体。
它符合接口隔离原则(客户端应该被迫依赖它不使用的方法。)
为什么更容易测试?
使用@RequestParam
,您不必模拟任何东西!
如果您有HttpServletRequest
作为参数,那么对于单元测试,您必须仔细模拟该对象-carefuly模拟每次调用getParameter。
答案 1 :(得分:0)
是的,我同意我亲自使用的@RequestParam注释 spring-mvc应用程序用于CRUD操作以及许多其他操作,例如在jsp页面上显示持久表和所有..