RequestMapping with annotation vs parameter

时间:2013-07-31 13:25:28

标签: java performance model-view-controller annotations

我正在考虑一个一般的RequestMapping问题。在没有选择任何特定的MVC框架的情况下,将基于注释的请求映射与简单的参数检查器映射进行比较,哪个更好?

假设我想创建一个Web服务,它应该处理例如“添加”和“删除”操作。

使用注释,它看起来像这样:

@Path("/add")
public void add(String addable) {}

@Path("/remove")
public void remove(String deletable) {}

使用参数它看起来像这样:

@Path("/operation")
public void doOperation(Operation op) {
    String type = op.getType();
    if ("add".equals(type)) {
        add(op);
    } else if ("remove".equals(type)) {
        remove(op);
    }
}

在第二个例子中,假设Operation对象是从JSON对象构建的。所以我们的想法是我们只有一个通用的Operation,它有一个类型参数,我们总是调用相同的请求(在这种情况下为/ operation),实际的请求类型在JSON对象中。

我知道第一个看起来更好,但还有其他原因可以解决这个问题吗?它有更好的性能还是其他什么?

1 个答案:

答案 0 :(得分:0)

  • 不应有任何显着的性能差异。
  • 第一个代码更具可读性
  • 您必须始终为第二个解决方案传递额外参数

您的问题可以简化为这种情况:

class A {
 methodA()
 methodB()
}

class B {
 methodC(Operation) {
    check what operation there is and invoke the needed method.
 }
}

如果您不想直接访问其他方法,或者想要在调用methodA()或methodB()之前做额外的工作,那么您将使用B类。例如,验证用户。

在MVC框架中,您已经有其他工具可以做到这一点。