Spring REST несколько контроллеров для одного URL, но разные методы http - PullRequest
1 голос
/ 03 августа 2011

В настоящее время у меня есть один контроллер, который обрабатывает GET и POST для групп URL:

@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 Ответ

1 голос
/ 15 августа 2011

Это ограничение было решено в Spring 3.1 с новой абстракцией HandlerMethodВам придется обновить до 3.1.M2.Дайте мне знать, если вам нужен пример.

...