일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jpa
- list
- Sleuth
- EnableWebMvc
- traceasynccustomautoconfiguration
- kotlin
- awssecretsmanagerpropertysources
- Spring Boot
- map
- spring
- spring3 spring2 traceid
- java lambda
- Spring JPA
- asynccustomautoconfiguration
- spring MVC
- asyncconfigurer
- @FunctionalInterface
- ResponseBody
- java list
- b3-propagation
- DeferredImportSelector
- CompletableFuture
- SpringMVC
- aws secretmanager
- java
- elasticsearch
- java.util.list
- HashMap
- traceId
- micrometer tracing
- Today
- Total
du.study기록공간
[Spring MVC] @EnableWebMvc 활용하기 본문
이번에는 @EnableWebMvc에 대해서 기록해 놓으려고 합니다.
@EnableWebMvc를 살펴보면 다음과 같이 선언이 되어있습니다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}
@Import(DelegatingWebMvcConfiguration.class)해당 부분을 Import하게 되는데 해당 클레스와 그 속에서 상속하는 WebMvcConfigurationSupport를 보면 MVC에서 필요한 기본적인 세팅을 해주거나, 웹 관련 설정을 커스터마이징 할 수 있도록 기능을 제공하고 있습니다.
@EnableWebMvc의 부분으로 이부분이 될 것 같습니다.
private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();
@Autowired(required = false)
public void setConfigurers(List<WebMvcConfigurer> configurers) {
if (!CollectionUtils.isEmpty(configurers)) {
this.configurers.addWebMvcConfigurers(configurers);
}
}
WebMvcConfigurer 타입의 빈들을 전부 WebMvcConfigurerComposite에 주입하고 있습니다. 그리고. WebMvcConfigurationSupport에서는 각 빈을 생성하면서 DelegatingWebMvcConfiguration의 함수를 호출하게 되는데 이 과정에서, 결국 WebMvcConfigurerComposite를 바라보며, WebMvcConfigurer 의 구현체를 보게 됩니다.
따라서 DelegatingWebMvcConfiguration는 WebMvcConfigurer 를 implement한 빈들을 통해서 커스터마이징 할 수 있게 도아주는 클레스로 볼 수 있으며, DelegatingWebMvcConfiguration 에서 protected로 지원해는 함수의 설명을 보면 커스터마이징 할 수 있는 리스트를 확인할 수 있습니다.
현재 프로젝트를 진행하면서 addInterceptors, configureViewResolvers현재 프로젝트를 진행하면서 addInterceptors, configureViewResolvers를 사용중인데 이번 기회에 하나씩 써보면서 포스팅을 해보려합니다. 우선 @EnableWebMvc정리는 이 정도가 될 것 같습니다.
어펜딕스 같은 자료로... 만약 @EnableWebMvc를 사용하지 않으면
해당 이미와 같이 우선순위가 설정되며, @EnableWebMvc를 사용하게 되면 기본적으로
다음과 같이 handlerMapping, handlerAdapters 의 우선순위가 변경되고, 저 안의 기본적인 인터셉터가 추가되는 등의 액션이 있습니다.
'스프링' 카테고리의 다른 글
[Spring MVC] @ResponseBody 응답에 대하여 알아보자(1) (0) | 2019.11.10 |
---|---|
[Spring MVC] Handler Interceptor (0) | 2019.11.10 |
[Spring MVC] web.xml 사용하지 않고 Spring MVC를 사용해보자 (0) | 2019.10.17 |
[Spring MVC] DispatcherServlet 기능 정리 (0) | 2019.10.15 |
Servlet(서블릿) (0) | 2019.08.15 |