복붙노트

[SPRING] 매개 변수 값에 의한 Spring MVC 요청 매핑을 분리하는 법

SPRING

매개 변수 값에 의한 Spring MVC 요청 매핑을 분리하는 법

Spring MVC 3에서는 url 매개 변수의 값에 따라 두 개의 다른 컨트롤러 클래스를 사용하여 동일한 URL을 처리하려고합니다. @RequestMapping annotation은 params와 같은 필드를 가지고 있습니다. 다음과 같은 두 가지 매핑이 있다고 생각합니다 (클래스 수준에서 매핑 사용).

@RequestMapping(value = "/myurl", params = "name=val1")

@RequestMapping(value = "/myurl", params = "name=val2")

그러나 그렇지 않습니다. / myurl에 대한 컨트롤러가 이미 매핑 된 두 번째 경우 (첫 번째 경우)에 대해 Spring에서 예외가 발생합니다.

매개 변수별로 요청 매핑을 분할하기위한 정확한 해결책이 있습니까? @RequestMapping을 확장하거나 프록시를 컨트롤러로 사용하고 매개 변수에 따라 다른 컨트롤러를 호출 할 수 있습니다 ... 이견있는 사람?

최신 정보 이 방법은 클래스 수준이 아니라 메소드 수준에서만 작동합니다 ... 이것은 :

@Controller
@RequestMapping(value = "/myurl")
public class Class123 {

    @RequestMapping(value = {"edit.htm"}, params = "src=1")
    public String open1(Map<String, Object> map) throws Exception {....}

    @RequestMapping(value = {"edit.htm"}, params = "src=2")
    public String open2(Map<String, Object> map) throws Exception {....}
}

그렇지 않습니다 :

@Controller
@RequestMapping(value = "/myurl", params = "src=1")
public class Class123_1 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}


@Controller
@RequestMapping(value = "/myurl", params = "src=2")
public class Class123_2 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}

그리고 나는 다른 클래스에서 논리를 분리하려고합니다.

해결법

  1. ==============================

    1.RequestMappingHandlerMapping (Spring 3.1의 새로운 기능)과 DefaultAnnotationHandlerMapping (RequestMappingHandlerMapping으로 대체 된 클래스)을 사용하는 것의 차이점처럼 들립니다.

    RequestMappingHandlerMapping (Spring 3.1의 새로운 기능)과 DefaultAnnotationHandlerMapping (RequestMappingHandlerMapping으로 대체 된 클래스)을 사용하는 것의 차이점처럼 들립니다.

  2. from https://stackoverflow.com/questions/9208210/how-to-split-spring-mvc-request-mapping-by-parameter-value by cc-by-sa and MIT license