인프런 커뮤니티 질문&답변

글러브님의 프로필 이미지

작성한 질문수

스프링 웹 MVC

@EnableWebMvc

@EnableWebMvc 와 @Configuration을 동시에 쓸 때 테스트에서 에러가납니다

해결된 질문

19.11.09 22:13 작성

·

750

0

RootConfig과 ServletConfig으로 계층형 컨텍스트를 구성하고있습니다( 레거시 프로젝트입니다 )

ServletConfig에 @EnableWebMvc와 @Configuration을 주고 테스트를 돌려보면 No ServletContext set 이라는 익셉션이 발생합니다 (실제 웹에서는 잘 동작됩니다)

근데 @Configuration을 제거하고, @EnableWebMvc만을 적용하면 테스트가 잘 통과됩니다.

제 생각으로는

ServletConfig에 달아준 @EnableWebMvc가 @Import 하고있는 DelegatingWebMvcConfiguration이 @Configuration을 달고 기본적인 셋팅이 되어있는데,

여기서 제가 ServletConfig에 @Configuration을 주니까DelegatingWebMvcConfiguration의 기본세팅이 무시되서 그런걸까요?

또 이렇게 ServletConfig -> @EnableWebMvc -> @Import(DelegatingWebMvcConfiguration) -> DelegatingWebMvcConfiguration -> @Configuration

몇 번의 단계를 거쳐야 @Configuration 이 있는데요, ServletConfig에 @Bean으로 빈을 등록해도 문제가 없을까요?

답변 2

2

백기선님의 프로필 이미지
백기선
지식공유자

2019. 11. 10. 00:02

코드를 봐야 정확히 알 수 있겠지만 둘 다 있을 때 실패한 이유는 아마도 ApplicationContext에 ServletContext를 설정하지 않았기 때문에 발생했을걸로 생각하는데.. 수업 영상에서는 9분 10초 정도에 저도 같은 문제를 해결하고 있으니 참고하세요.

ServletConfig에 @Configuration을 쓰지 않는 이상 거기에 @Bean을 등록하진 못합니다. 빈 설정이 아니니까요. 

0

글러브님의 프로필 이미지
글러브
질문자

2019. 11. 10. 00:03

감사합니다!