본문 바로가기
Java/Spring

SpringBoot ViewResolver 설정, application.yml 읽지 못할 때

by 오늘의개발부 2020. 6. 18.
반응형

기존에 커스터마이징이 필요해 자바 설정에서 ViewResolver를 설정했었다. 

 

	@Bean
	public InternalResourceViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setViewClass(JstlView.class);
		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".jsp");
		viewResolver.setOrder(1);
		return viewResolver;
	}

그런데 추가 설정이 application.yml에서 가능하다는 것을 알게 되어 설정을 옮기려고 위 코드를 주석처리했다.

그리고 다음과 같이 application.yml에 추가했다.

 

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/stadmin/
      suffix: .jsp

하지만 웬일인지 prefix와 suffix가 먹히지 않았다.

 

한동안 삽질하다가 발견한 것.

@Configuration
@EnableWebMvc
public class ServletConfig implements WebMvcConfigurer{
...
...
}

위 설정 클래스에서 ViewResolver 설정을 했었는데, @EnableWebMvc 어노테이션이 활성화되어 있었다. 하지만 설정을 옮기기 위해 주석처리 된 상태.

@EnableWebMvc까지 주석처리해주니, application.yml의 설정에 따라 prefix와 suffix가 잘 붙어나왔다.

 

@EnableWebMvc이 해주는 다른 자동설정은 유지하고 싶은데. 이 어노테이션이 활성화 되어 있을 때 application.yml과 상호보완적으로 적용되는 게 아닌 걸까?

 

@EnableWebMvc는 DelegatingWebMvcConfiguration.class를 import 하는데, ServletConfig 클래스에서 @EnableWebMvc를 주석처리한 상태로 DelegatingWebMvcConfiguration의 메소드에 디버깅을 걸어보니, boot app이 뜨면서 해당 라인에서 디버깅이 걸리는 것을 발견했다. @EnableWebMvc를 명시적으로 해주지 않더라도 어디에선가 활성화되어 있다는 것 같은데 어딘지 한번 찾아봐야겠다.

 

반응형