엔지니어로 가는 길

Spring Boot에서 @EnableWebMvc 사용시 주의할 점 본문

프로그래밍/Spring

Spring Boot에서 @EnableWebMvc 사용시 주의할 점

탐p슨 2022. 12. 28. 12:57
728x90

@EnableWebMvc

- Spring에서 제공하는 어노테이션

- `@Configuration`이 붙은 자바 클래스 설정 파일에 사용될 수 있다

- 이 어노테이션이 붙을 경우 `WebMvcConfigurationSupport` 클래스로부터 Spring MVC 설정을 import 한다

(`HandlerMapping`, `HandlerAdapter`, `ConversionService` 등 웹과 관련된 빈들이 등록된다)

 

@WebMvcAutoConfiguration

- Spring Boot에서 제공하는 어노테이션

- 웹과 관련된 자동설정이 이루어진다

- spring-boot-starter-web 의존성을 추가하면 별도의 작업을 해주지 않아도 말 그대로 자동으로 설정된다

 

Spring Boot 자동설정과 관련해서는 아래 글을 참고하자.

 

Spring의 @Conditional과 Spring Boot의 AutoConfiguration

Contents 1. Introduction 2. @Conditional 모든 Spring 프로젝트의 Configuration에서 공통되는 부분이 있다면? Configuration이 공유될 때 발생할 수 있는 문제 @Conditional @Conditional을 이용한 개선 3. AutoConfiguration Sprin

live-everyday.tistory.com

 

`@WebMvcAutoConfiguration`을 살펴보면 아래와 같은 어노테이션들이 붙어있다.

 

 

이 중에서 `@ConditionalOnMissingBean` 어노테이션의 역할은 해당 어노테이션에서 명시한 클래스가 존재하지 않는 경우에 `WebMvcAutoConfiguration`을 적용하겠다는 의미이다. 다시 말해, `WebMvcConfigurationSupport` 클래스가 빈으로 등록되어 있다면 `WebMvcAutoConfiguration`을 적용하지 않겠다는 뜻이다. `WebMvcConfigurationSupport`는 위에서 살펴봤듯이 `@EnableWebMvc` 어노테이션을 붙이면 빈으로 등록된다. 따라서 최종적으로 아래와 같이 정리할 수 있다.

 

`@EnableWebMvc`을 사용하면 Spring Boot의 Web MVC 자동설정이 이루어지지 않는다.

 

따라서 Spring Boot의 Web MVC 자동설정을 무시하고 웹과 관련된 설정을 커스터마이징 하고 싶다면 `@EnalbedWebMvc`를 붙이고, Spring Boot의 Web MVC 자동설정을 모두 적용한 채로 그 위에서 커스터마이징을 적용하고 싶다면 `@EnableWebMvc` 어노테이션을 사용하지 않고 아래와 같이 커스터마이징을 진행해야 한다.

 

728x90
Comments