복붙노트

[SPRING] @RequestMapping 값에 슬래시를 사용하거나 사용하지 않습니다. 공식 문서가 필요하거나 Spring 소스를 가리키고 있습니까?

SPRING

@RequestMapping 값에 슬래시를 사용하거나 사용하지 않습니다. 공식 문서가 필요하거나 Spring 소스를 가리키고 있습니까?

나는 프로젝트의 믹스를 발견했다.

@RequestMapping(value = "events/...");
@RequestMapping(value = "/events/...");

(메소드 레벨 주석 앞에 슬래시가 있거나없는).

나는 검색을 수행한다 :

site:http://static.springsource.org/spring/docs/3.1.x  slash

다음 링크를 읽으십시오.

그러나 왜이 자료들은 슬래시를 건너 뛰는 것이 허용되는지 대답하지 못했습니다. 공식적인 Spring 문서는 항상 슬래시로 예제를 보여주었습니다 ...

공식 문서 또는 Spring 소스를 가리켜 야합니다.

해결법

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

    1.경로가 / / Spring (DefaultAnnotationHandlerMapping)으로 시작하지 않으면 추가됩니다.

    경로가 / / Spring (DefaultAnnotationHandlerMapping)으로 시작하지 않으면 추가됩니다.

    클래스 DefaultAnnotationHandlerMapping 라인 122 (Spring 3.1.2)의 String [] decideUrlsForHandler (String beanName) 메소드 참조 (클래스 레벨 용)

    String[] methodLevelPatterns = determineUrlsForHandlerMethods(handlerType, true);
    for (String typeLevelPattern : typeLevelPatterns) {
        if (!typeLevelPattern.startsWith("/")) {
                typeLevelPattern = "/" + typeLevelPattern;
        }
    

    클래스 DefaultAnnotationHandlerMapping 라인 182 (Spring 3.1.2) (메소드 레벨 용)의 String [] decideUrlsForHandler (Class handlerType, final boolean hasTypeLevelMapping)

    String[] mappedPatterns = mapping.value();
    if (mappedPatterns.length > 0) {
    for (String mappedPattern : mappedPatterns) {
        if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
            mappedPattern = "/" + mappedPattern;
        }   
    
  2. from https://stackoverflow.com/questions/12742695/use-or-not-leading-slash-in-value-for-requestmapping-need-official-docs-or-poi by cc-by-sa and MIT license