我可以覆盖方法类型的@RequestMapping吗?

时间:2012-05-04 01:08:35

标签: java spring spring-mvc

我有一个这样的弹簧控制器/ POJO:

@RequestMapping("/foo");
public class MyController {
    @RequestMapping("/bar") 
    public String MyAction() { return someSharedFunc(false); }

    @RequestMapping("/debug/ping");
    public String MyDebugPing() { return someSharedFunc(true); }

    private String someSharedFunc(boolean debug) {
      if(debug) return "FooBar"; else return "Debug!";
    }
}

在此方案中,MyDebugPing的网址为/foo/debug/ping。但是,我希望它是/debug/ping,实际上忽略了类上的RequestMapping。

这可能吗?

1 个答案:

答案 0 :(得分:5)

只需从类中删除@RequestMapping注释,并使用每个方法的完整路径。例如。

public class MyController {
    @RequestMapping("/foo/bar") 
    public String MyAction() { return someSharedFunc(false); }

    @RequestMapping("/debug/ping");
    public String MyDebugPing() { return someSharedFunc(true); }

    private String someSharedFunc(boolean debug) {
      if(debug) return "FooBar"; else return "Debug!";
    }
}

如果有很多方法,那么您可以简单地将方法移出到另一个控制器。