2013-07-23 52 views
2

我似乎无法找到任何有关使用@WebFilter注释的内容,并让Spring 3.2的AbstractAnnotationConfigDispatcherServletInitializer正确处理所使用的参数。Spring 3.2和@WebFilter annontation ..它支持吗?

Spring 3.2是否支持该注释?

编辑:基于nicohlas回答

如果我使用@WebFilter annontation,并设置内部的参数...它看起来像AbstractAnnotationConfigDispatcherServletInitializer registerServletFilter没有那些annontations和设置事情看起来正确地从那些PARAMS:例如url-mappings

知道Spring 3.2支持Servlet 3.0,不应该支持@WebFilter吗?

或者我错过了WebFilter的全部重点?

编辑2:

当我部署我的战争,有战争中定义@WebFilters,容器看起来“注册”那些......但是,出于某种原因,即使设置适当的URL模式,当请求进入DispatchServlet时......就像过滤器没有被调用一样。

回答

0

@WebFilter是一个JEE6组件,是Servlet 3.0的新成员。

这不是一件春会支持,而是你的应用程序容器(Tomcat的中,WebSphere,Glassfish的,JBoss的,...)

这里的想法是你的应用程序容器的移动配置到Java,而比利用部署描述符。

编辑:

这似乎对我来说,使用@WebFilter注解将是通过类路径扫描发现Filter的。您询问的AbstractAnnotationConfigDispatcherServletInitializer#registerServletFilter方法采用的是Filter,而不会查看其上的注释。

+0

了解上述所有......谢谢。也许我需要更好地重述这个问题。 –

+1

是的,看着github上的src ... registerServletFilter不关心注释。我想我也看到你在说什么.. @WebFilter与ServletContext的注册器..所有的servlet都可以使用这些过滤器。 我不知道我怎么能得到调度Servlet使用它们......因为它似乎他们不会被调用时,因为somereason ..我看到他们“注册”,但他们没有调用DispatchServlet被称为...真的werid –

+0

我想你可以利用(即覆盖)'AbstractAnnotationConfigDispatcherServletInitializer'的'getServletFilters()'方法为'DispatcherServlet'指定'Filter'。 http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/support/AbstractDispatcherServletInitializer.html#getServletFilters() –