Spring REST多个控制器,用于一个URL但不同的http方法

时间:2011-08-03 09:58:48

标签: spring rest spring-mvc controller restful-architecture

我目前有一个控制器可以处理URL组的GET和POST:

@Controller
public class RestGroups {

...

    @RequestMapping(method = RequestMethod.GET, value = "/groups")
    @ResponseBody
    public GroupsDto groups() {
        return new GroupsDto(getGroups());
    }

    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml")
    @ResponseBody
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) {
        groupSaver.save(groupDto.createEntity());
        return groups();
    }

现在我想拥有两个控制器,两个控制器都分配给相同的URL,但每个控制器都有不同的方法,如下所示:

@Controller
public class GetGroups {

...

    @RequestMapping(method = RequestMethod.GET, value = "/groups")
    @ResponseBody
    public GroupsDto groups() {
        return new GroupsDto(getGroups());
    }

...

}


@Controller
public class PostGroup {

...


    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml")
    @ResponseBody
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) {
        groupSaver.save(groupDto.createEntity());
        return groups();
    }

...
}

有可能吗?因为现在我得到Spring异常,一个URL不能由两个不同的控制器处理。这个问题有解决方法吗?我真的想把这两个完全不同的动作分成两个不同的类。

1 个答案:

答案 0 :(得分:1)

这个限制已经在Spring 3.1中通过其新的HandlerMethod抽象解决了。你必须升级到3.1.M2。如果您需要一个例子,请告诉我。