使用 DispatcherServlet时 ,出现 java.lang.IllegalStateException:未找到WebApplicationContext:未注册ContextLoaderListener吗? 使用 DelegatingFilterProxy 过滤器时出错。因此,我删除了 DispatcherServlet ,现在改用 ContextLoaderListener ,并且Spring应用程序可以正常加载。但是,我对一个非常重要的bean有问题:
<context:component-scan base-package="com.mydomain"/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="openSessionInViewInterceptor" /> </list> </property> </bean>
这个bean不再起作用,我的@Controller都没有URL映射了。如果我切换回使用 DispatcherServlet ,则没有问题(除了我的过滤器再次无效)。如何才能从 ContextLoaderListener 内正确加载此bean ?
干杯
尼克
同时需要ContextLoaderListener 和 对DispatcherServlet-错误消息没有告诉你删除的servlet。
ContextLoaderListener
DispatcherServlet
为了弄清楚Spring在这里做什么,DispatcherServlet创建了自己的ApplicationContext(通常使用xxx- servlet.xml),但是您在web.xml中配置的任何Spring过滤器都无法访问Servlet的ApplicationContext。
ApplicationContext
xxx- servlet.xml
在ContextLoaderListener创建第二个ApplicationContext与servlet的(与整个Web应用程序相关联),并链接本身ApplicationContext,使过滤器和servlet来通过Spring沟通。