[SPRING] java.lang.IllegalArgumentException : 디폴트 서블릿 처리를 설정하려면 ServletContext가 필요합니다.
SPRINGjava.lang.IllegalArgumentException : 디폴트 서블릿 처리를 설정하려면 ServletContext가 필요합니다.
다음 테스트 클래스가 있습니다.
@ActiveProfiles({ "DataTC", "test" })
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseTestConfiguration.class, DataTestConfiguration.class, JpaConfiguration.class, PropertyPlaceholderConfiguration.class })
public class RegularDayToTimeSlotsTest {
...
이 문제는 BaseTestConfiguration 클래스에서 발생한 것 같습니다.
@Configuration
@ComponentScan(basePackages = { "com.bignibou" }, excludeFilters = { @Filter(type = FilterType.CUSTOM, value = RooRegexFilter.class),
@Filter(type = FilterType.ANNOTATION, value = Controller.class), @Filter(type = FilterType.ANNOTATION, value = ControllerAdvice.class) })
public class BaseTestConfiguration {
}
나는 체계적으로이 예외를 얻는다 :
Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer.<init>(DefaultServletHandlerConfigurer.java:54)
at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.defaultServletHandlerMapping(WebMvcConfigurationSupport.java:329)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44.CGLIB$defaultServletHandlerMapping$22(<generated>)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44$$FastClassByCGLIB$$368bb5c1.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:326)
at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration$$EnhancerByCGLIB$$bb4ceb44.defaultServletHandlerMapping(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 43 more
이 문제를 해결하는 방법을 모르겠습니다. 어떻게 든 테스트를 실행하면 Spring이 ServletContext를 찾고 위의 예외가 발생합니다 ...
해결법
-
==============================
1.@Configuration 클래스 중 하나에는 @EnableWebMvc가 명시 적으로 주석되어 있습니다. 이것이 DelegatingWebMvcConfiguration이 @EnableWebMvc에 의해 임포트되기 때문에 스택 트레이스에서 끝나는 방식입니다.
@Configuration 클래스 중 하나에는 @EnableWebMvc가 명시 적으로 주석되어 있습니다. 이것이 DelegatingWebMvcConfiguration이 @EnableWebMvc에 의해 임포트되기 때문에 스택 트레이스에서 끝나는 방식입니다.
그래서 당신이 WebApplicationContext (그리고 ServletContext)를 필요로하지 않는다고 생각할지라도, 당신은 @EnableWebMvc로 어플리케이션 컨텍스트를로드하기 때문에 실제로 그것을 필요로합니다.
두 가지 옵션이 있습니다.
문안 인사,
Sam (Spring TestContext Framework 작성자)
-
==============================
2.너 빠진 것 같아.
너 빠진 것 같아.
@WebAppConfiguration
테스트 클래스에서.
문서 상태
일반적으로 Servlet 컨테이너는 ServletContext를 제공합니다. 테스트 환경에 있기 때문에 가짜가 필요합니다. @WebAppConfiguration은이를 제공합니다.
-
==============================
3.Servlet 컨텍스트를 인스턴스화하려면 주석을 사용해야한다.
Servlet 컨텍스트를 인스턴스화하려면 주석을 사용해야한다.
@WebAppConfiguration
통합 테스트를 위해로드 된 ApplicationContext가 WebApplicationContext 여야한다고 선언하는 데 사용되는 클래스 수준 주석. 테스트 클래스에 @WebAppConfiguration이 존재하는 것만으로 웹 애플리케이션 루트에 대한 경로에 "file : src / main / webapp"라는 기본값을 사용하여 테스트를 위해 WebApplicationContext가로드되도록합니다 (즉, 리소스 기본 경로). 리소스베이스 경로는 백그라운드에서 사용되어 테스트의 WebApplicationContext에 대한 ServletContext 역할을하는 MockServletContext를 생성합니다.
-
==============================
4.유사한 오류가 발생했지만 테스트를 실행하는 대신 응용 프로그램을 정상적으로 실행하는 중이었습니다.
유사한 오류가 발생했지만 테스트를 실행하는 대신 응용 프로그램을 정상적으로 실행하는 중이었습니다.
커스텀 PermissionEvaluator를 사용하고 있다면 Spring의 주 보안 설정을 가진 별도의 @Configuration 클래스에서 선언해야한다.
참조 : 스프링 부트 프로젝트에 메소드 기반 보안을 추가하려면 어떻게해야합니까?
오픈 Github 문제도 있습니다 : https://github.com/spring-projects/spring-boot/issues/4875
from https://stackoverflow.com/questions/21516683/java-lang-illegalargumentexception-a-servletcontext-is-required-to-configure-de by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring의 Websocket 인증 및 권한 부여 (0) | 2018.12.18 |
---|---|
[SPRING] Spring FileSystemResource에 환경 변수 기반 위치를 사용할 수 있습니까? (0) | 2018.12.18 |
[SPRING] 봄, 잭슨 및 맞춤 설정 (예 : 맞춤 디시리얼라이저) (0) | 2018.12.18 |
[SPRING] Jackson 메시지 변환기를 사용하여 JSON 응답을 만드는 Spring 3.0 (0) | 2018.12.18 |
[SPRING] 추가 매개 변수가있는 봄 전달? (0) | 2018.12.18 |