[SPRING] WebMvcConfigurationSupport를 확장하고 WebMvcAutoConfiguration을 사용할 수 있습니까?
SPRINGWebMvcConfigurationSupport를 확장하고 WebMvcAutoConfiguration을 사용할 수 있습니까?
WebMvcConfigurationSupport 클래스를 확장하여 두 가지를 수정해야합니다.
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();
handlerMapping.setRemoveSemicolonContent(false);
handlerMapping.setOrder(1);
return handlerMapping;
}
}
WebMvcAutoConfiguration 클래스에서 등록 된 기본값이 마음에 들지만 클래스의 조건부 주석으로 인해 WebMvcConfigurationSupport 클래스를 확장하면 자동 구성이 수행되지 않습니다.
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class,
WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@Order(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class WebMvcAutoConfiguration {...}
기본적으로 WebMvcAutoConfiguration 클래스를로드하고 해당 클래스의 대부분의 코드를 복사하거나 붙여 넣지 않아도됩니까?
아니면 다른 곳에서 RequestMappingHandlerMapping setOrder () 및 setRemoveSemicolonContent ()를 호출하여 @EnableWebMvc 주석을 사용하고 자동 구성 클래스를 아무 문제없이 실행할 수 있습니까?
미리 감사드립니다!
해결법
-
==============================
1.분석이 정확합니다 (@EnableWebMvc 또는 WebMvcConfigurationSupport를 직접 확장하면 WebMvcAutoConfiguration이 해제됩니다). a) 우리는 autoconfig를위한 "get-out"절이 필요하고 b) Spring은 같은 맥락에서 두 개의 WebMvcConfigurationSupports를 가지고 있다고 생각하지 않는다고 생각합니다. 당신이 그것을 바꿀 수있는 방법을 찾고 싶다면 github에 대해 토론 해 주시면 기쁩니다 (중간 정도의 부분이있을 수 있습니다).
분석이 정확합니다 (@EnableWebMvc 또는 WebMvcConfigurationSupport를 직접 확장하면 WebMvcAutoConfiguration이 해제됩니다). a) 우리는 autoconfig를위한 "get-out"절이 필요하고 b) Spring은 같은 맥락에서 두 개의 WebMvcConfigurationSupports를 가지고 있다고 생각하지 않는다고 생각합니다. 당신이 그것을 바꿀 수있는 방법을 찾고 싶다면 github에 대해 토론 해 주시면 기쁩니다 (중간 정도의 부분이있을 수 있습니다).
-
==============================
2.BeanPostProcessor를 사용하여 WebMvcAutoConfiguration을 유지하면서 RequestMappingHandlerMapping을 사용자 정의 할 수있었습니다.
BeanPostProcessor를 사용하여 WebMvcAutoConfiguration을 유지하면서 RequestMappingHandlerMapping을 사용자 정의 할 수있었습니다.
@Configuration public class RequestMappingConfiguration { @Bean public RequestMappingHandlerMappingPostProcessor requestMappingHandlerMappingPostProcessor() { return new RequestMappingHandlerMappingPostProcessor(); } public static class RequestMappingHandlerMappingPostProcessor implements BeanPostProcessor { @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; } } }
Spring Boot가 더 나은 방법을 제공한다면 행복 할 것입니다 ... 아마도 PathMatchConfigurer 주변에서 뭔가를 할 수 있을까요?
-
==============================
3.WebMvcConfigurationSupport 대신 DelegatingWebMvcConfiguration에서 확장하면 자동 구성이 수행되지 않습니다.
WebMvcConfigurationSupport 대신 DelegatingWebMvcConfiguration에서 확장하면 자동 구성이 수행되지 않습니다.
@Configuration public class WebConfig extends DelegatingWebMvcConfiguration { @Override public RequestMappingHandlerMapping requestMappingHandlerMapping() { RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping(); handlerMapping.setRemoveSemicolonContent(false); handlerMapping.setOrder(1); return handlerMapping; } }
-
==============================
4.지금 봄 부팅에서이 작업을 수행하는 가장 좋은 방법은 컨텍스트에 WebMvcRegistrations 구성 요소를 추가하는 것입니다.이 솔루션은 질문 시점에 존재하지 않았습니다 (스프링 부트 1.4.0부터 사용 가능).
지금 봄 부팅에서이 작업을 수행하는 가장 좋은 방법은 컨텍스트에 WebMvcRegistrations 구성 요소를 추가하는 것입니다.이 솔루션은 질문 시점에 존재하지 않았습니다 (스프링 부트 1.4.0부터 사용 가능).
from https://stackoverflow.com/questions/22267191/is-it-possible-to-extend-webmvcconfigurationsupport-and-use-webmvcautoconfigurat by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] DB로부터의 Spring PropertyPlaceholderConfigurer로드 (0) | 2019.01.12 |
---|---|
[SPRING] Spring 3에서 @Component와 @Configuration의 차이점 (0) | 2019.01.12 |
[SPRING] spring-data-mongo - 선택적 쿼리 매개 변수? (0) | 2019.01.12 |
[SPRING] HibernateValidator를 사용하여 크로스 필드 유효성 검사가 오류 메시지를 표시하지 않습니다. (0) | 2019.01.12 |
[SPRING] 필수 스프링에서 동일한 유형의 여러 빈 (0) | 2019.01.12 |