복붙노트

[SPRING] Spring을 사용한 정확한 요청 매핑

SPRING

Spring을 사용한 정확한 요청 매핑

나는 봄에 다음과 같은 것을 가지고있다.

@RequestMapping("/hello")

그러나 Spring은 /hello.*뿐만 아니라 / hello /에 대한 매핑을 자동으로 추가합니다. 정확한 URL 일치를 수행하려면 어떻게해야합니까?

/ hello 만 작동해야하며 다른 것은 404해야 함

해결법

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

    1.RequestMappingHandlerMapping에서 접미사 검색 (useSuffixPatternMatch)을 해제하면 문제가 해결되지만, 필요한 모든 인프라 bean을 수동으로 연결하는 대신 구성에서 를 사용하면 실제로 그렇게 쉽지 않습니다. 이 경우 RequestMappingHandlerMapping 유형의 추가 bean 정의는 효과가 없습니다.

    RequestMappingHandlerMapping에서 접미사 검색 (useSuffixPatternMatch)을 해제하면 문제가 해결되지만, 필요한 모든 인프라 bean을 수동으로 연결하는 대신 구성에서 를 사용하면 실제로 그렇게 쉽지 않습니다. 이 경우 RequestMappingHandlerMapping 유형의 추가 bean 정의는 효과가 없습니다.

    두 가지 옵션이 있습니다.

    또한 위와 같은 해킹을 적용하지 않고 mvc 네임 스페이스에 의해 생성 된 RequestMappingHandlerMapping을 커스터마이징하는 것이 훨씬 쉬워 지도록 요청하는 또 다른 티켓이 있습니다. 이 티켓에 투표하는 것을 고려할 수 있습니다.

  2. ==============================

    2.버전 3.1 / 3.2를 사용하는 경우 주석을 추가하거나 삭제하지 않고도이 작업을 시도 할 수 있습니다

    버전 3.1 / 3.2를 사용하는 경우 주석을 추가하거나 삭제하지 않고도이 작업을 시도 할 수 있습니다

    public class MvcConfigurationPostProcessor implements BeanPostProcessor, PriorityOrdered {
    
       @Override
       public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
          if (bean instanceof RequestMappingHandlerMapping) {
             ((RequestMappingHandlerMapping) bean).setUseSuffixPatternMatch(false);
          }
          return bean;
       }
    
       @Override
       public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
          return bean;
       }
    
       @Override
       public int getOrder() {
          return PriorityOrdered.HIGHEST_PRECEDENCE;
       }
    
    }
    

    xml 구성에 위의 포스트 프로세서를 사용하십시오.

    <bean class="com.beanprocbug.melia.MvcConfigurationPostProcessor" />
    <mvc:annotation-driven />
    
  3. ==============================

    3.다음과 같이 접미사 일치를 끌 수 있습니다.

    다음과 같이 접미사 일치를 끌 수 있습니다.

    <bean name="handlerMapping" class="...annotation.RequestMappingHandlerMapping">
        <property name="useSuffixPatternMatch" value="false"></property>
    </bean>
    

    자세한 내용은 RequestMappingHandlerMapping을 참조하십시오.

  4. from https://stackoverflow.com/questions/15912329/exact-requestmapping-with-spring by cc-by-sa and MIT license