首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >servlet :配置默认java.lang.IllegalArgumentException处理需要ServletContext

servlet :配置默认java.lang.IllegalArgumentException处理需要ServletContext
EN

Stack Overflow用户
提问于 2014-02-03 05:48:25
回答 2查看 49.2K关注 0票数 56

我有以下测试类:

代码语言:javascript
复制
@ActiveProfiles({ "DataTC", "test" })
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {BaseTestConfiguration.class, DataTestConfiguration.class, JpaConfiguration.class, PropertyPlaceholderConfiguration.class })
public class RegularDayToTimeSlotsTest {
...

这个问题似乎来自BaseTestConfiguration类:

代码语言:javascript
复制
@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 {

}

我系统地得到了这个异常:

代码语言:javascript
复制
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,我得到了上面的异常...

EN

回答 2

Stack Overflow用户

发布于 2014-02-03 13:19:10

要实例化Servlet上下文,必须使用注释。

代码语言:javascript
复制
@WebAppConfiguration

用于声明为集成测试加载的ApplicationContext应为WebApplicationContext的类级批注。仅在测试类上出现@WebAppConfiguration就可以确保为测试加载一个文件,并使用“WebApplicationContext :src/main/webapp”作为指向web应用程序根目录的路径(即资源基础路径)的默认值。资源基础路径在幕后用于创建一个MockServletContext,它用作测试的WebApplicationContext的ServletContext。

票数 11
EN

Stack Overflow用户

发布于 2016-07-12 19:54:52

我得到了一个类似的错误,但在正常运行应用程序时,而不是试图运行测试。

事实证明,如果您使用的是自定义PermissionEvaluator,那么您需要在一个单独的@Configuration类中声明它,以便在中使用您的主要Spring安全配置。

请参阅:How do I add method based security to a Spring Boot project?

还有一个公开的Github问题:https://github.com/spring-projects/spring-boot/issues/4875

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21516683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档