【发布时间】:2016-04-21 07:05:34
【问题描述】:
我的 web.xml 看起来像这样
<!--listener>
<listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
</listener-->
<filter>
<filter-name>webContextFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>webContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我注释掉了上面的 JBoss SpringContextLoaderListener 以避免 IllegalStateException,因为我在其他地方(来自强制库)使用了 AbstractSecurityWebApplicationInitializer 的子类,它本身创建了根应用程序上下文。
当我在 tomcat7 下运行它时,我得到一个
严重:启动 webContextFilter 时出现异常 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 定义了名为“webContextFilter”的 bean
applicationContext.xml 包含适当的 component-scan 定义,所以这不是问题。
我猜可能在创建 DelegatingFilterProxy 时来自AbstractSecurityWebApplicationInitializer 的上下文加载器尚未启动??
我该如何解决这个问题?
EDIT1:webContextFilter bean 在正确的包中,即context:component-scan 中列出的子包,bean 定义为
@Component("webContextFilter")
public class WebContextFilter extends OncePerRequestFilter {
// ...
}
bean 位于 WEB-INF/lib/xyz.jar 中。当 JBoss resteasy SpringContextLoaderListener 在 web.xml 中未注释时,这一切都可以在 tomcat6 下工作。
EDIT2:也许我的问题归结为:当使用AbstractSecurityWebApplicationInitializer 创建根上下文时,我如何指定其他过滤器,因为 web.xml 中的过滤器似乎没有工作吗?
【问题讨论】:
标签: java xml spring spring-mvc