哪个更好使用request.getParameter()或@RequestParm?

时间:2018-04-15 17:25:29

标签: java spring

春天哪种方式被认为是更好的软件工程实践:

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;
}

2 个答案:

答案 0 :(得分:4)

我会使用@RequestParam注释,因为这样您的代码更具可读性并且更容易进行单元测试

为什么更具可读性? 因为很明显,您只依赖于HTTP API来处理该单个参数。 HttpServletRequest是一个很大的对象,你可以用它做很多事情。在这种情况下,您只使用该功能的非常小的子集。当方法签名尽可能具体时,代码更易读。类型为HttpServletRequest的参数与String类型的参数不太具体。 它符合接口隔离原则(客户端应该被迫依赖它不使用的方法。)

为什么更容易测试? 使用@RequestParam,您不必模拟任何东西! 如果您有HttpServletRequest作为参数,那么对于单元测试,您必须仔细模拟该对象-carefuly模拟每次调用getParameter。

答案 1 :(得分:0)

是的,我同意我亲自使用的@RequestParam注释  spring-mvc应用程序用于CRUD操作以及许多其他操作,例如在jsp页面上显示持久表和所有..