2014-09-05 2 views
0

Spring 3.2.x에서 RequestMapping의 순서가 어떻게 작동하는지 알고 싶습니다. 나는 버전 3.2.9와 3.2.10에서 이것을 시도했다. /xxx/a/b/c과 일치하는 매핑 /**, /xxx/{a}/{b}/{c}/xxx/{a}/**에 대한 요청이 제공된 경우 RequestMappingHandlerMapping.lookupHandlerMethod의 비교는 가장 잘 일치하는 /**을 산출합니다. 그러나 나는 /xxx/{a}/{b}/{c}이 가장 잘 맞을 것으로 예상합니다. 아무도 나에게 이것을 설명 할 수 있습니까?Spring RequestMappingInfo compareTo order

편집 그래서 나는 코드로 보았다 RequestMappingInfo 패턴 일치 비교 AntPathMatcher 사용하는 것을 발견했습니다. 후자는 정확한 일치를 확인한 다음 각각에 대해 와일드 카드를 계산하고 각각에 대해 괄호를 추가하고이를 더하고 차이를 반환합니다. 따라서 /**/xxx/{a}/{b}/{c}보다 구체적으로 평가합니다. 그러나 이것은 잘못된 IMO이고 이전 버전의 Spring은 다른 동작을 사용했습니다. 누구든지 문제에 대해 의견을 말하거나 수정 제안을 제안 할 수 있습니까?

답변

0

/**의 선언을 /**/**/**으로 변경하여 빠른 수정을 구현합니다. 추악하지만 이전과 완전히 동일하게 문제를 해결합니다. 프레임 워크의 일부로 무언가가 수행되기를 바랍니다.