-
2022-08-03 : SpringTIL ( Today I Learned ) 2022. 8. 3. 16:21
1. WebMvcConfigurer
1. Spring에서 제공하는 설정의 자동화와 변경
[ @Enable~ 을 이용한 설정 자동화 ]
- 설정을 자동화하는 기능을 제공
- @Enable로 시작하는 애노테이션을 @Configuration이 붙은 설정 클래스에 붙임으로써 이와 관련된 기능들을 편리하게 제공하고 있다.
- 그 중에서도 @EnableWebMvc가 대표적으로 스프링이 제공하는 웹과 관련된 최신 전략 빈들이 등록된다.
[ SpringBoot의 AutoCOnfiguration(자동 설정) ]
- SpringBoot의 AutoConfigure(자동 구성) 기능을 통해 많은 설정들이 자동화
- @SpirngBootApplication 어노테이션이 자동으로 붙어있는데, 이 어노테이션 내부에 @EnableAutoConfiguration 이라는 어노테이션이 있다.
- @EnableAutoConfiguration 은 내부적으로 @EnableWebMvc과 동일한 기능을 사용하기 때문에 우리는 메세지 컨버터(Message Converter)나 뷰 리졸버(View Resolver) 또는 인터셉터(Interceptor) 등을 따로 설정해주지 않아도 되고, 추가로 @EnableWebMvc 기반의 설정도 추가하지 않아도 된다.
[ ~Configurer 인터페이스를 통한 설정의 변경 ]
- 스프링이 제공해주는 자동 설정들 외에 추가 설정이 필요
- 스프링에서는 @Enable로 적용되는 인프라 빈에 대해 추가적인 설정을 할 수 있도록 ~Configurer로 끝나는 인터페이스(빈 설정자)를 제공
- 대표적으로 @EnableWebMvc의 빈 설정자는 WebMvcConfigurer이며, 이를 구현한 클래스를 만들고 @Configuration을 붙여 빈으로 등록해주면 된다
2. @EnableWebMvc와 WebMvcConfigurer
[ WebMvcConfigurer 인터페이스 ]
- @EnableWebMvc를 통해 자동 설정되는 빈들의 설정자는 WebMvcConfigurer이며, 이를 구현한 클래스를 만들어야 한다.
- 메소드
ㆍadd~ : 기본 설정이 없는 빈들에 대하여 새로운 빈을 추가함
ㆍconfigure~ : 수정자를 통해 기존의 설정을 대신하여 등록함
ㆍextend~ : 기존의 설정을 이용하며 추가로 설정을 확장함
- 예를 들어 인터셉터와 같은 것들은 기본저으로 등록되어 있지 않기 때문에 addInterceptors라는 메소드가 제공
- 메세지 컨버터와 같은 것들은 기본적으로 제공되는 것이 있기 때문에 configureMessageConverters와 extendMessageConvertes 메소드가 있는 것이다
* 사용 시 @EnableWebMvc를 빼주어야 한다.
기본적으로 스프링에서 제공해주는 웹 기능들에 추가적으로 커스터마이징을 하기를 원한다면 @EnableWebMvc없이 WebMvcConfigurer를 구현한 설정 파일만 등록해야한다.
참고 자료 : https://mangkyu.tistory.com/176
'TIL ( Today I Learned )' 카테고리의 다른 글
2022-08-09 : Spring (0) 2022.08.09 2022-08-05 : JS (0) 2022.08.05 2022-08-02 : Spring (0) 2022.08.02 2022-08-02 : JAVA (0) 2022.08.02 2022-08-01 : webpack & React (0) 2022.08.01