Spring - 抽象url映射来处理常见的url参数

时间:2011-11-29 07:15:03

标签: java spring-mvc

假设以下设置:

我们有多个命令映射到不同的URL,每个URL都有自己的主体,我们可以使用映射捕获它们,例如:

@RequestMapping(value = "url1/{param}/command", method = RequestMethod.POST)
@ResponseBody
public Response command1(@PathVariable("param") String param,
                         @RequestParam(value = urlParam) Param urlParam,
                         @RequestBody Request request) {
    ...}

我们有几种情况,其中相同的参数在多个网址中重复,特别是URL参数。由于我们有几个这样的变量,今天我们手动将它们添加到每个映射中,这个映射容易出错且过于冗长。

无论如何通过初始映射路由所有映射,捕获所有这些url参数,从而消除所有其他映射的混乱?

1 个答案:

答案 0 :(得分:0)

如果从Spring MVC切换到任何JAX-RS框架(例如Jersey,Apache Wink),您可以使用子资源:

@Path("/parent/{id}")
class ParentResource {


  @Path("/child1")
  Child1Resource getChild() {
  ....
  }

  @Path("/child2")
  Child2Resource getChild() {
  ....
  }
}

注意带有@Path注释的方法没有使用HTTP方法注释,因此任何与url匹配的相关HTTP请求都会传播到子资源中。

减少错误发音的另一个建议:在创建url和使用参数时都使用常量(public final static String)作为参数。这使它更加冗长,但减少了错误。它可以与Spring-MVC和JAX-RS一起使用。不要忘记可以将常量放在注释值中。

希望这有帮助。