【发布时间】:2016-02-01 12:39:50
【问题描述】:
使用WebApplicationInitializer,我可以轻松地在onStartup() 方法中为ServletContext 添加过滤器。
如何使用WebMvcConfigurerAdapter 添加过滤器?我必须使用 XML 吗?
添加 1
为了帮助其他人更容易理解 Spring Web Configuration,我画了下图。
现在你只需要先了解Spring Web配置背后的rational。然后从下面选择要继承的配置类和覆盖的方法。
查找它比记住这么多东西更痛苦。
还有一篇关于 Spring Web Initialization 的好文章:
http://www.kubrynski.com/2014/01/understanding-spring-web-initialization.html
添加 2
根据Tunaki的回复,我查了AbstractDispatcherServletInitializer。过滤器注册发生在以下代码中:
即使我覆盖了绿色的getServletFilters() 方法,我仍然无法访问registerServletFilter() 的Dyanmic 结果。那么如何通过addMappingForUrlPatterns()配置过滤器呢?
看来我have to 覆盖了整个registerDispatcherServlet() 方法。
【问题讨论】:
-
过滤器自动映射到
DispatcherServlet。如果您需要其他内容,请覆盖onStartup方法(不要忘记调用super.onStartup并像往常一样自己注册过滤器。这仍然有效...... -
或者简单地添加另一个实现
WebApplicationInitializer的类...可以有多个,不一定只有一个!。
标签: spring spring-mvc servlet-filters