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

标签 java spring

哪种方式被认为是 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;
}

最佳答案

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

为什么更具可读性? 因为很明显,您仅针对该单个参数依赖 HTTP API。 HttpServletRequest 是一个大对象,你可以用它做很多事情。在这种情况下,您仅使用该功能的很小一部分。当方法签名尽可能具体时,代码更具可读性。 HttpServletRequest 类型的参数不如 String 类型的参数具体。 符合接口(interface)隔离原则(客户端应该强制依赖它不使用的方法。)

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

关于java - 使用 request.getParameter() 或 @RequestParm 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49844784/

相关文章:

java - Eclipse Java 编辑器换行不符合预期

java - 计算 "Flower Objects"数组中出现的次数

java - 从 Directories Only JFileChooser 返回的部分路径有时会重复

Java TCP/IP 聊天室,如何使其通过互联网工作

java - 本地 Maven 存储库位置

java - Spring Security - 不访问数据库

java - 对顺序和非顺序数字进行分组的算法 - JAVA

android - Spring resttemplate 中 START_ARRAY token 中的对象

Spring 上下文 :component-scan casting exception

java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法