使用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?

干杯

尼克

最佳答案

您同时需要ContextLoaderListenerDispatcherServlet-错误消息没有告诉您删除servlet。

为了阐明Spring在这里所做的事情,DispatcherServlet创建了自己的ApplicationContext(通常使用xxx-servlet.xml),但是您在web.xml中配置的任何Spring过滤器都无法访问servlet的ApplicationContext
ContextLoaderListener创建第二个ApplicationContext(与整个Web应用程序关联),并将其自身与servlet的ApplicationContext链接,从而允许过滤器和servlet通过Spring进行通信。

10-02 05:05