Spring MVC的De delegateatingFilterProxy有什么意义?
我在我的春季MVC应用程序中看到了这一点:web.xml
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
我试图弄清楚为什么它在那里,以及它是否真的需要。
我在Spring文档中找到了这个解释,但它并没有帮助我理解它:
这似乎表明,该组件是弹簧中定义的servlets和Spring中定义的组件之间的“胶水”。web.xml
applicationContext.xml
7.1 委派过滤器
使用 servlet 过滤器时,您显然需要在 中声明它们,否则它们将被 servlet 容器忽略。在Spring Security中,过滤器类也是在应用程序上下文中定义的Spring Bean,因此能够利用Spring丰富的依赖注入设施和生命周期接口。Spring提供了应用程序上下文之间的链接。
web.xml
DelegatingFilterProxy
web.xml
使用 Dede delegateatingFilterProxy 时,您将在文件中看到如下内容:
web.xml
<filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
请注意,过滤器实际上是一个 ,而不是实际实现过滤器逻辑的类。所做的是将 Filter 的方法委托给从 Spring 应用程序上下文中获取的 Bean。这使Bean能够从Spring Web应用程序上下文生命周期支持和配置灵活性中受益。Bean 必须实现,并且它必须具有与 filter-name 元素中的名称相同的名称。阅读 Javadoc for DelegatingFilterProxy 以了解更多信息
DelegatingFilterProxy
DelegatingFilterProxy
javax.servlet.Filter
那么,如果我把它从我的中取出,会发生什么?我的 servlet 将无法与 Spring 容器通信?web.xml