반응형
기존에 커스터마이징이 필요해 자바 설정에서 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를 명시적으로 해주지 않더라도 어디에선가 활성화되어 있다는 것 같은데 어딘지 한번 찾아봐야겠다.
반응형
'Java > Spring' 카테고리의 다른 글
[Spring][Transaction] 트랜잭션 제외하기, 트랜잭션 제외 안 될 때 (0) | 2020.09.07 |
---|---|
[Logback] Logback 설정 기록. 프로필에 따라, 패키지에 따라 분리. (0) | 2020.09.03 |
classpath 안에 있는 json 파일 읽어서 json 객체 만들기 (0) | 2020.06.18 |
[Spring]스프링 프로젝트 다국어 처리 (0) | 2020.02.03 |
[Build Tool] gradle이란? (0) | 2019.07.04 |