복붙노트

[SPRING] 스프링 MVC 요청 매핑 순서를 수정하는 방법은 무엇입니까?

SPRING

스프링 MVC 요청 매핑 순서를 수정하는 방법은 무엇입니까?

다음 RequestMapping으로 실행중인 기존 Spring MVC 서비스가 있습니다.

@RequestMapping(value = "{user}/**", method = RequestMethod.GET)

이제 다음 RequestMapping을 사용하여 동일한 컨트롤러에 새 메서드를 추가해야합니다.

@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)

새 URL에 대해 테스트 할 때 Spring은 항상 첫 번째 함수를 선택하므로 두 번째 기능에 액세스 할 수 없습니다.

어쨌든 Spring에 새로운 "api"메소드를 사용할 수 있습니까? 내가 생각할 수있는 유일한 방법은 web.xml에 새 Java 서블릿을 만드는 것이지만 좀 더 간단하게하고 싶습니다. @Controller와 @Controller ( "api")를 사용하여 두 개의 다른 컨트롤러를 만들려고했으나 문제가 해결되지 않았습니다.

해결법

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

    1.사용자의 매개 변수가 String이라고 가정하면 Spring은 사용자 api에 대해 호출 된 것으로 가정합니다.

    사용자의 매개 변수가 String이라고 가정하면 Spring은 사용자 api에 대해 호출 된 것으로 가정합니다.

    이것을 해결할 수있는 몇 가지 방법이 있습니다. 첫 번째 (그리고 최선)는 요청 매핑을 더 좁게 만드는 것입니다. 결국 "**"에 의존하는 대신 매핑을 완전히 지정하십시오.

    두 번째 방법은 매핑에서 정규식을 사용하여 "api"사용자를 허용하지 않는 것입니다. 다음과 같은 것이 효과가있다.

    @RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)
    
  2. from https://stackoverflow.com/questions/22410609/how-to-correct-spring-mvc-requestmapping-order by cc-by-sa and MIT license