Spring에서 사용하는 다양한 설정이 존재한다.
그 설정들에 대한 정리가 필요할 것같아서 한번 정리해 보았다.
※ 스프링 MVC 사용을위한 설정
- 기존에 스프링 MVC 설정을 위해서 xml 파일에 다음과 같이 설정하였다.
<mvc:annotation-driven/>
하지만 대부분의 설정이 xml에서 java로 변경하는 추세에서는 다음과 같이 설정한다.
1 2 3 4 5 | @Configuration @EnableWebMvc public class WebConfig { } | cs |
여기서 추가적인 기본 설정들을 커서텀하고 싶을 경우 WebMvcConfigurerAdapter 추상클래스를 상속받아 재정의하여 사용했다.
1 2 3 4 5 | @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { } | cs |
하지만 spring5에서는 WebMvcConfigurerAdapter를 사용하지 않는다.
대신 WebMvcConfigurer 인터페이스를 사용한다.
그 이유는 WebMvcConfigurerAdaper에 경우 추상클래스였기에 필요치 않은 메서드도 구현을 해야했지만 java8에서는 디폴트 메서드가 생기면서 그럴필요가 없어졌기 때문이다.
WebMvcConfigurer
has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter그렇기 때문에 몇가지 문법 사용에 변경되었는데 그중에 내가 사용하는 부분중에서는 intercepter설정과 MessageConverter설정이 변경되었다.
기존에는 다음과같이 사용했다.
1 2 3 4 5 6 7 8 9 10 11 12 | @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(converter()); super.configureMessageConverters(converters); } @Override public void addInterceptors(InterceptorRegistry registry) { // Always Interceptor registry.addInterceptor(alwaysInterceptor()).addPathPatterns("/**").excludePathPatterns("/weather"); super.addInterceptors(registry); } | cs |
하지만 webMvcConfigurer 인터페이스를 사용하면 다음과 같이 사용하면 된다.
1 2 3 4 5 6 7 8 9 10 | @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(converter()); } @Override public void addInterceptors(InterceptorRegistry registry) { // Always Interceptor registry.addInterceptor(alwaysInterceptor()).addPathPatterns("/**").excludePathPatterns("/weather"); } | cs |
그리고 설정에서 사용하는 @EnableMvc 과연 이놈은 무슨놈일까 궁금했다. 이놈은 Spring-Boot 에서는 굳이 사용할 필요가 없다고 하는데 왜일까?
@EnableMvc 애노테이션을 붙히게 되면 WebMvcConfigurationSupport 클래스가 자동으로 빈으로 등록이된다.
이 클래스는 Mvc Java Config 설정에서 설정을 제공하는 주요 클래스이다. 그렇기 때문에 기본적이 웹 설정을 제외한 handler 등등의 설정을 진행하기 위해서는 해당 설정이 필요하다.
spring-boot에서는 기본적으로 클래스패스에 웹관련 설정이 있을경우 WebMvcAutoConfiguration 클래스를 동작하여 기본적인 설정을 진행해준다.
하지만 커스텀을 진행하려고 한다면 무조건 @EnableWebMvc 애노테이션을 붙혀주거나 WebMvcConfigurationSupport를 상속받아야한다. 왜냐면 WebMvcConfigurationSupport클래스는 WebMvcAutoConfiguration 클래스가 동작하지 않을때만 동작하기 때문이다.
이렇게 spring mvc 설정에 관련된 클래스들에 대해 알아보았다.
평소에 정리가 되지않아 헷갈렸는데 정리가 되어서 기분이좋다.
'web > Spring' 카테고리의 다른 글
lombok 사용시 Generating equals/hashCode implementation 에러 수정방법 (0) | 2018.06.03 |
---|---|
mac환경에서 spring boot에 lombok 설치하기 (0) | 2018.06.03 |
Spring framework에서 html을 pdf만들어 다운로드 하기 (29) | 2018.05.27 |
Spring boot에서 Spring security를 사용하여 로그인 하기 (12) | 2018.05.27 |
spring boot에 https 접속 적용하기 (0) | 2018.05.27 |