일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- beanfactory
- DispatcherServlet
- 링커
- gradle
- 자바
- Spring
- Immutable
- DesignPattern
- 클린코드
- springboot
- java
- Kotlin for Java Developers
- ORM
- 컴퓨터시스템
- springwebmvc
- FunctionalInterfaces
- 링킹
- 토비의스프링
- exception
- IOC
- ApplicationContext
- 토비의스프링3.1
- AutoConfiguration
- String
- lambda
- JPA
- hibernate
- 빌드툴
- 프록시
- 메이븐
- Today
- Total
엔지니어로 가는 길
Spring Boot에서 @EnableWebMvc 사용시 주의할 점 본문
@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` 어노테이션을 사용하지 않고 아래와 같이 커스터마이징을 진행해야 한다.
'프로그래밍 > Spring' 카테고리의 다른 글
Spring Boot에서 HttpMessageConverter를 설정하는 방법 (0) | 2022.12.29 |
---|---|
Spring의 @Conditional과 Spring Boot의 AutoConfiguration (0) | 2021.10.01 |
Spring security BadCredentialException의 원인 및 해결 방법 (0) | 2021.08.26 |
@Bean을 통한 빈 등록시 주의해야 할 점 (0) | 2021.05.17 |
@InitBinder와 WebDataBinder의 쓰임 (0) | 2021.04.11 |