ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022-08-03 : Spring
    TIL ( 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

    댓글

Designed by Tistory.